@wiscale/tauri-plugin-velesdb 1.15.0 → 1.18.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.
package/LICENSE ADDED
@@ -0,0 +1,363 @@
1
+ VelesDB Core License 1.0
2
+
3
+ Based on the Elastic License 2.0 (ELv2) — Adapted for VelesDB Core
4
+
5
+ Copyright (c) 2024-2026 Wiscale France. All rights reserved.
6
+
7
+ VelesDB® is a registered trademark of Wiscale France.
8
+
9
+ ---
10
+
11
+ ## Acceptance
12
+
13
+ By using the Software, you agree to all of the terms and conditions below.
14
+
15
+ ## Copyright License
16
+
17
+ The Licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the Software, in each case subject to the limitations and conditions below.
18
+
19
+ ## Limitations
20
+
21
+ ### 1) No Hosted or Managed Service
22
+
23
+ You may not provide the Software to third parties as a Hosted or Managed Service.
24
+
25
+ A "Hosted or Managed Service" is any service where You (or a third party acting on Your behalf) host, operate, or make available the Software — directly or indirectly — to third parties who are provided access to a Substantial Set of the Software's features or functionality.
26
+
27
+ This restriction includes, without limitation:
28
+
29
+ - offering the Software as a cloud service, hosted service, managed service, or database-as-a-service (DBaaS),
30
+ - operating the Software for third parties, including as a managed service provider (MSP), outsourcer, consultant, hosting provider, or service provider, even if provided to a single customer,
31
+ - exposing the Software's query, administration, indexing, ingestion, storage, graph traversal, knowledge graph, columnar filtering, or management capabilities (or any substantially similar capabilities) to third parties through any interface, including but not limited to: APIs, SDKs, web interfaces, command lines, gateways, middleware, service layers, application wrappers, proxy layers, or any other programmatic or interactive mechanism.
32
+
33
+ If third parties can store data in, query, manage collections or indexes, traverse or manage graph nodes and edges, filter structured data, administer schemas, or otherwise use the Software as a database, vector database, graph database, knowledge graph engine, columnar store, search engine, or query engine — whether directly or through any intermediary layer — this constitutes a Hosted or Managed Service and requires a separate commercial license from the Licensor.
34
+
35
+ ### 2) No Competitive Offering
36
+
37
+ You may not use the Software to build, sell, offer, operate, or otherwise make commercially available any product or service that is Substantially Similar to the Software or that competes with the Software as:
38
+
39
+ - a database,
40
+ - a vector database,
41
+ - a graph database or knowledge graph engine,
42
+ - a columnar store or analytical engine,
43
+ - a search engine,
44
+ - a query engine, or
45
+ - a hybrid search, retrieval, or multi-model data system.
46
+
47
+ This restriction applies whether the product is offered as software, as a service, or as a component of a larger offering, and regardless of whether the Software's code is modified.
48
+
49
+ This restriction does NOT prohibit:
50
+
51
+ - internal use of the Software within your own organization,
52
+ - integration of the Software as a backend component of your own product or service (provided end users receive only the results of your application and are not given access to the Software's core database capabilities),
53
+ - use of the Software to power features such as search, retrieval, ranking, recommendations, or RAG within your own product.
54
+
55
+ ### 3) No Circumvention of Paid Features
56
+
57
+ You may not move, change, disable, or circumvent any licensing mechanism or functionality that enforces paid features, and you may not remove or obscure any functionality in the Software that is protected by such licensing mechanism.
58
+
59
+ ### 4) No Removal of Notices; Trademarks
60
+
61
+ You may not alter, remove, or obscure any licensing, copyright, or other notices of the Licensor in the Software. Any use of the Licensor's trademarks is subject to applicable law.
62
+
63
+ ### 5) Benchmarking
64
+
65
+ You may conduct and publish benchmarks of the Software, provided that any public disclosure of benchmark results includes all of the following:
66
+
67
+ - the benchmarking methodology used,
68
+ - the dataset(s) used (including size, type, and source),
69
+ - the hardware configuration (CPU, RAM, storage, network),
70
+ - the software version of VelesDB Core tested,
71
+ - the full configuration of the Software as tested (including relevant parameters, tuning, and index settings),
72
+ - any other software or tools used in the benchmark.
73
+
74
+ The purpose of this requirement is transparency and reproducibility, not restriction. Benchmarks that omit this information may not be published or distributed publicly.
75
+
76
+ ## Redistribution
77
+
78
+ ### Attribution for Public-Facing Applications
79
+
80
+ If You deploy or make publicly available an Application or Service that uses the Software as a component — including SaaS products, web applications, mobile applications, or browser-based applications — You must include a visible attribution notice containing a hyperlink to https://velesdb.com.
81
+
82
+ **Placement:** The notice must appear in at least one location that is accessible to end users without requiring a separate action (e.g., not solely in source code or internal documentation). Acceptable placements include, but are not limited to:
83
+
84
+ - a website footer or sidebar;
85
+ - an application's About, Credits, or Settings page;
86
+ - API documentation or developer portal;
87
+ - a README or landing page for open-source projects that integrate the Software.
88
+
89
+ **Format:** The notice may take any reasonable form, such as:
90
+
91
+ - "Powered by [VelesDB](https://velesdb.com)"
92
+ - "Built with [VelesDB](https://velesdb.com)"
93
+ - The VelesDB logo (available at https://velesdb.com/brand) linking to https://velesdb.com
94
+
95
+ The key requirement is a **clickable link to https://velesdb.com** that is visible to end users.
96
+
97
+ **Exemptions:** This requirement does not apply to:
98
+ - internal use within your organization;
99
+ - development, testing, or staging environments;
100
+ - holders of a VelesDB Enterprise or Premium license (which may include waived or alternative attribution terms — contact contact@wiscale.fr).
101
+
102
+ Failure to comply with this attribution requirement constitutes a violation of this license.
103
+
104
+ ### Redistribution Terms
105
+
106
+ You may redistribute the Software (in original or modified form), including through container images (e.g., Docker), installers, package managers (e.g., Homebrew, apt, cargo), infrastructure-as-code templates (e.g., Terraform, Helm), or any other distribution mechanism, provided that:
107
+
108
+ 1. a complete copy of this license is included with each distribution,
109
+ 2. all copyright and licensing notices in the Software are preserved and unmodified,
110
+ 3. the redistributed Software remains governed by this license (you may not relicense it under different terms),
111
+ 4. if modified, the distribution includes prominent notices stating that you have modified the Software, and
112
+ 5. redistribution does not grant recipients any right to provide the Software as a Hosted or Managed Service.
113
+
114
+ For the avoidance of doubt, redistribution of the Software does not, by itself, constitute a Hosted or Managed Service, provided that the recipient operates the Software for its own internal use and not for the benefit of third parties.
115
+
116
+ ## Permitted Use (Clarification)
117
+
118
+ You may use the Software in production, including for commercial purposes, and you may embed or integrate the Software into your own products and services, provided that:
119
+
120
+ - the Software is used only as an internal component of your product or service, and
121
+ - your end users are not provided access to a Substantial Set of the Software's features or functionality.
122
+
123
+ For example, it is permitted to use the Software internally to power features such as:
124
+
125
+ - search and retrieval,
126
+ - retrieval-augmented generation (RAG),
127
+ - ranking and recommendations,
128
+ - document indexing and similarity matching,
129
+ - knowledge graph traversal and relationship discovery,
130
+ - structured data filtering and analytics,
131
+ - any other feature where end users receive only the results produced by your application and do not receive access to the Software itself.
132
+
133
+ **Embedded and local-first use.** The Software is designed to run as an embedded database (in-process, WASM, mobile, desktop, or server). Using the Software in embedded mode within your own application — including in browser-based (WASM), mobile (iOS/Android), desktop (Tauri), or server-side deployments — is expressly permitted under this license, provided the Software serves only as an internal component and end users do not receive direct access to the Software's database capabilities.
134
+
135
+ ## Business Model Clarification
136
+
137
+ The Licensor offers the Software under a multi-tier model:
138
+
139
+ - **VelesDB Core** — available under this license (source-available, free for permitted use).
140
+ - **VelesDB Enterprise** — available under a separate commercial license for advanced features, support, and use cases not permitted under this license.
141
+ - **VelesDB Cloud** — the Licensor's proprietary managed database service.
142
+
143
+ Any use of the Software as a Hosted or Managed Service, as a Competitive Offering, or in any other manner not permitted by this license requires a separate **Enterprise** or **Premium** commercial license from the Licensor.
144
+
145
+ ## Examples (Non-Normative)
146
+
147
+ ### Allowed under this license
148
+
149
+ - Your application uses VelesDB Core internally to power search, retrieval, or RAG, and customers cannot create or manage collections, indexes, or databases, nor run arbitrary queries against VelesDB Core.
150
+ - You distribute VelesDB Core bundled with a desktop, mobile, or on-premise application for the customer's own internal use.
151
+ - You use VelesDB Core as a backend for your SaaS product, where end users interact only with your application's interface and receive only processed results.
152
+ - You publish benchmark results comparing VelesDB Core to other databases, with full methodology disclosure.
153
+ - You redistribute VelesDB Core via Docker Hub, a package manager, or an infrastructure template, with this license included.
154
+
155
+ ### Requires a commercial (Enterprise/Premium) license
156
+
157
+ - Offering VelesDB Core (or a derivative) as a hosted, managed, or cloud database service (DBaaS), regardless of whether it is branded as "VelesDB" or under a different name.
158
+ - Operating VelesDB Core for a customer as a managed service provider, outsourcer, or consultant, where the customer has access to the Software's core capabilities.
159
+ - Building and selling a product that competes with VelesDB as a vector database, search engine, or query engine.
160
+ - A cloud provider offering VelesDB as a managed database, managed cluster, hosted indexing/query platform, or vector database as a service.
161
+ - A multi-tenant service where tenants have access to the Software's database-like capabilities (collections, indexes, schemas, queries, ingestion).
162
+ - Any service — regardless of the interface layer or branding — where third parties can effectively use the Software as a database.
163
+
164
+ ## Patents
165
+
166
+ The Licensor grants you a license, under any patent claims the Licensor can license, or becomes able to license, to make, have made, use, sell, offer for sale, import and have imported the Software, in each case subject to the limitations and conditions in this license.
167
+
168
+ This license does not cover any patent claims that you cause to be infringed by modifications or additions to the Software.
169
+
170
+ If you or your company make any written claim that the Software infringes or contributes to infringement of any patent, your patent license for the Software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
171
+
172
+ ## Notices
173
+
174
+ You must ensure that anyone who gets a copy of any part of the Software from you also gets a copy of these terms.
175
+
176
+ If you modify the Software, you must include in any modified copies of the Software prominent notices stating that you have modified the Software.
177
+
178
+ ## No Other Rights
179
+
180
+ These terms do not imply any licenses other than those expressly granted in these terms.
181
+
182
+ ## Termination
183
+
184
+ If you use the Software in violation of these terms, such use is not licensed, and your licenses will automatically terminate.
185
+
186
+ If the Licensor provides you with a notice of your violation, and you cease all violation of this license no later than 30 days after you receive that notice, your licenses will be reinstated retroactively. However, if you violate these terms after such reinstatement, any additional violation of these terms will cause your licenses to terminate automatically and permanently.
187
+
188
+ ## No Liability
189
+
190
+ As far as the law allows, the Software comes as is, without any warranty or condition, and the Licensor will not be liable to you for any damages arising out of these terms or the use or nature of the Software, under any kind of legal claim.
191
+
192
+ ## Definitions
193
+
194
+ The **"Licensor"** is Wiscale France.
195
+
196
+ The **"Software"** is the software the Licensor makes available under these terms, including VelesDB Core and all associated components, libraries, tools, and documentation.
197
+
198
+ The **"Author"** is Julien Lange.
199
+
200
+ **"You"** refers to the individual or entity agreeing to these terms.
201
+
202
+ **"Your company"** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. "Control" means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
203
+
204
+ **"Your licenses"** are all the licenses granted to you for the Software under these terms.
205
+
206
+ **"Use"** means anything you do with the Software requiring one of your licenses.
207
+
208
+ **"Hosted or Managed Service"** means any service, platform, or offering where You (or a third party acting on Your behalf) host, operate, or make available the Software for third parties, and those third parties are provided with access — directly or indirectly — to a Substantial Set of the Software's features or functionality. Access includes, without limitation, access through any of the following: APIs, SDKs, web interfaces, command lines, gateways, middleware, service layers, application wrappers, proxy layers, webhooks, message queues, or any other programmatic or interactive mechanism that enables third parties to create, manage, query, administer, index, ingest, store, traverse graphs, manage knowledge graph nodes or edges, filter structured data, or otherwise use the Software's core database, vector, graph, columnar, or hybrid capabilities.
209
+
210
+ **"Substantial Set of features or functionality"** means access to features or functionality that, taken together, would reasonably allow a third party to use the Software as a general-purpose database, vector database, graph database, knowledge graph engine, columnar store, search engine, query engine, or hybrid/multi-model data system, or as a replacement for the Software, rather than merely receiving the results of your product's or application's features.
211
+
212
+ **"Substantially Similar"** means a product or service that provides database, vector database, graph database, knowledge graph, columnar store, search engine, query engine, hybrid search, or multi-model data capabilities that overlap in purpose and function with the core capabilities of the Software to a degree that would reasonably be considered competitive. A product is not Substantially Similar merely because it uses the Software internally as a component.
213
+
214
+ **"Competitive Offering"** means any product or service that is Substantially Similar to the Software and is made commercially available to third parties, whether as software, as a service, or as a component of a larger offering.
215
+
216
+ **"Cloud Provider"** means any entity that provides cloud computing infrastructure, platform, or software services to third parties, including (without limitation) infrastructure-as-a-service (IaaS), platform-as-a-service (PaaS), and software-as-a-service (SaaS) providers.
217
+
218
+ ---
219
+
220
+ ## Licensing FAQ (VelesDB Core License 1.0)
221
+
222
+ This FAQ is provided for convenience and developer guidance only. It does not replace, modify, or supplement the license terms above. In case of any conflict, the license terms prevail. If in doubt, contact the Licensor (Wiscale France — contact@wiscale.fr).
223
+
224
+ ### 1) Can I use VelesDB Core in production?
225
+
226
+ **Yes.** Production use is permitted, including commercial production use, as long as you comply with the license limitations (no Hosted or Managed Service, no Competitive Offering).
227
+
228
+ ### 2) Can I use VelesDB Core inside my own SaaS product?
229
+
230
+ **Yes.** If VelesDB Core is used only as an internal component of your SaaS and your customers interact only with your application's interface (not with VelesDB directly), this is permitted.
231
+
232
+ In practice: your customers can use your app's features (search, RAG, recommendations, etc.), but they cannot create collections, manage indexes, run arbitrary queries, or otherwise use VelesDB as a database product.
233
+
234
+ ### 3) Can I use VelesDB Core as a backend for a RAG system?
235
+
236
+ **Yes.** Using VelesDB Core to index documents, store embeddings, and retrieve results for a RAG pipeline is a typical permitted use case, as long as end users receive only the generated answers from your application and do not have direct database access.
237
+
238
+ ### 4) What is NOT allowed without a commercial license?
239
+
240
+ - Offering VelesDB Core (or a derivative) as a hosted or managed database service (DBaaS, vector DB as a service, managed cluster, etc.).
241
+ - Operating VelesDB Core for a customer as an MSP, outsourcer, or consultant where the customer has access to VelesDB's core capabilities.
242
+ - Building and selling a competing database, vector database, search engine, or query engine based on VelesDB Core.
243
+ - A cloud provider (e.g., AWS, GCP, Azure, or any other) offering VelesDB as a managed database service.
244
+
245
+ If you want to do any of the above, you need an **Enterprise or Premium license**.
246
+
247
+ ### 5) Can I expose a public API endpoint that runs vector search against VelesDB Core?
248
+
249
+ **It depends:**
250
+
251
+ - **Allowed:** You expose an endpoint like `/search` or `/recommend` that returns results for your product, without giving customers the ability to create/manage collections, ingest vectors, manage indexes, run arbitrary queries, or administer the database.
252
+ - **Not allowed without a commercial license:** You expose VelesDB-like capabilities (collections, ingestion, indexing, querying, admin) to third parties in a way that makes your service effectively "VelesDB as a service."
253
+
254
+ ### 6) Can I let my customers upload documents, and I index them in VelesDB Core for RAG?
255
+
256
+ **Yes.** As long as customers are using your product's document upload feature and are not given direct access to VelesDB's database capabilities (no collection management, no arbitrary queries, no index administration).
257
+
258
+ ### 7) Can a cloud provider offer VelesDB as a managed service?
259
+
260
+ **No, not under this license.** Cloud providers (or any third party) offering VelesDB as a managed database, DBaaS, managed cluster, hosted indexing/query platform, or vector database as a service must obtain a commercial license from Wiscale France.
261
+
262
+ ### 8) Can an agency, consultant, or MSP host VelesDB Core for a client?
263
+
264
+ **Not under this license** if the arrangement constitutes a Hosted or Managed Service (including single-customer managed hosting where the client has access to VelesDB's core capabilities). That scenario requires a commercial license.
265
+
266
+ ### 9) Can I embed VelesDB Core in a desktop, mobile, or on-prem product I sell?
267
+
268
+ **Yes.** Distributing VelesDB Core bundled with your product is permitted, provided you comply with the license (include the license text and notices), and you are not providing it as a Hosted or Managed Service.
269
+
270
+ ### 10) Can I modify VelesDB Core and keep my changes private?
271
+
272
+ **Yes.** The license allows modification. If you distribute a modified version, you must include prominent notices stating that you modified it, and you must provide a copy of the license terms to recipients.
273
+
274
+ ### 11) Can I redistribute VelesDB Core?
275
+
276
+ **Yes.** You may redistribute the Software (as-is or modified) through any mechanism (Docker, package managers, Helm charts, etc.), provided:
277
+
278
+ - the license text is included,
279
+ - copyright notices are preserved,
280
+ - the software remains under this license,
281
+ - if modified, modifications are prominently marked.
282
+
283
+ Redistribution does not grant recipients any right to provide the Software as a Hosted or Managed Service.
284
+
285
+ ### 12) Can I publish benchmarks of VelesDB Core?
286
+
287
+ **Yes.** You are encouraged to benchmark VelesDB Core. However, public benchmark results must include full disclosure of methodology, dataset, hardware, software version, and configuration. This ensures transparency and reproducibility.
288
+
289
+ ### 13) Can I build a competing database product using VelesDB Core?
290
+
291
+ **No.** The No Competitive Offering clause prohibits using the Software to build, sell, or offer a product that competes with VelesDB as a database, vector database, graph database, columnar store, search engine, or query engine.
292
+
293
+ However, using VelesDB Core as an internal component of a non-competing product (e.g., a CRM, an e-commerce platform, a content management system) is permitted.
294
+
295
+ ### 14) Can I remove license headers or copyright notices?
296
+
297
+ **No.** You may not alter, remove, or obscure licensing, copyright, or other notices.
298
+
299
+ ### 15) Can I use the name "VelesDB" for my fork?
300
+
301
+ **No.** VelesDB® is a registered trademark of Wiscale France. You may not brand your fork, derivative work, or product as "VelesDB" without written permission from Wiscale France. Use of the VelesDB name or logo is subject to applicable trademark law.
302
+
303
+ ### 16) What about a multi-tenant service where each tenant only has limited features?
304
+
305
+ If tenants (third parties) get access to a Substantial Set of VelesDB's database, vector database, or query capabilities, it is a Hosted or Managed Service and requires a commercial license, regardless of the number of features exposed per tenant.
306
+
307
+ ### 17) What if my service wraps VelesDB behind an API gateway or middleware?
308
+
309
+ The license explicitly covers indirect access through APIs, SDKs, gateways, middleware, service layers, and application wrappers. If the end result is that third parties can use the Software as a database — regardless of how many layers sit between them and VelesDB — a commercial license is required.
310
+
311
+ ### 18) What if I'm unsure whether my use case is permitted?
312
+
313
+ **Ask.** Contact Wiscale France (contact@wiscale.fr) for clarification or to discuss a commercial license. We want developers to build great things with VelesDB — we're happy to help you find the right license for your use case.
314
+
315
+ ### 19) How do I get an Enterprise or Premium license?
316
+
317
+ Contact Wiscale France (contact@wiscale.fr) to discuss licensing for hosted/managed services, Competitive Offerings, cloud provider partnerships, and other premium use cases.
318
+
319
+ ### 20) What is the difference between VelesDB Core, Enterprise, and Cloud?
320
+
321
+ | Tier | License | Use Case |
322
+ |------|---------|----------|
323
+ | **VelesDB Core** | This license (source-available) | Internal use, embedding, SaaS backend, development, testing |
324
+ | **VelesDB Enterprise** | Commercial license | Advanced features, support, hosted/managed services, competitive offerings |
325
+ | **VelesDB Cloud** | Proprietary SaaS | Fully managed database service operated by Wiscale France |
326
+
327
+ ### 21) Can I use VelesDB's graph engine and knowledge graph features in my product?
328
+
329
+ **Yes.** You can use the vector, graph, columnar, and hybrid search features internally within your product. The restriction applies only if you expose those capabilities directly to third parties as a database service, or if you build a competing graph/vector/search product.
330
+
331
+ ### 22) Can I embed VelesDB in a browser (WASM), mobile app, or Tauri desktop app?
332
+
333
+ **Yes.** Embedded and local-first use is expressly permitted. VelesDB is designed to run in-process (WASM, iOS, Android, Tauri, server). As long as the Software serves as an internal component of your application, this is a permitted use.
334
+
335
+ ### 23) Does the license cover the premium features (Hybrid Search, RBAC, SSO, etc.)?
336
+
337
+ The VelesDB Core license covers VelesDB Core. Premium features (such as RBAC, SSO, GPU Acceleration, Audit Logging, Multi-Tenancy, Encryption at Rest, and Snapshots) are available under VelesDB Enterprise with a separate commercial license. You may not circumvent the licensing mechanism that enforces premium features.
338
+
339
+ ### 24) Can I use VelesDB Core's VelesQL query language in my product?
340
+
341
+ **Yes.** Using VelesQL to query data internally within your product is permitted. However, exposing a general-purpose VelesQL endpoint to third parties (allowing them to run arbitrary queries) would constitute providing access to a Substantial Set of the Software's capabilities and is not permitted without a commercial license.
342
+
343
+ ### 25) Do I need to display "Powered by VelesDB" on my website or app?
344
+
345
+ **Yes, if your app is public.** Include a link to velesdb.com somewhere visible — footer, About page, credits, or docs. That's it. No specific size, color, or position required. Just a clickable link that users can find.
346
+
347
+ Want to remove it? An Enterprise license waives the attribution requirement.
348
+
349
+ ### 26) What counts as a "public-facing application"?
350
+
351
+ Anything accessible by people outside your organization: a SaaS product, a public website, a mobile app on app stores, a public API. Internal tools and staging environments don't count.
352
+
353
+ ### 27) Can I use the VelesDB logo instead of text?
354
+
355
+ **Yes.** Logo or text, your choice — as long as it links to velesdb.com. Brand assets are at https://velesdb.com/brand.
356
+
357
+ ---
358
+
359
+ ## Trademark Notice
360
+
361
+ VelesDB® is a registered trademark of Wiscale France. All rights reserved.
362
+
363
+ Use of the VelesDB name, logo, or brand assets is subject to applicable trademark law. You may not use the VelesDB name or logo to imply endorsement, affiliation, or sponsorship by Wiscale France without prior written permission. Forks and derivative works must not be branded as "VelesDB" without explicit authorization from Wiscale France.
package/dist/index.d.mts CHANGED
@@ -511,7 +511,7 @@ declare function deletePoints(request: DeletePointsRequest): Promise<void>;
511
511
  * collection: 'documents',
512
512
  * searches: [
513
513
  * { vector: embedding1, topK: 5 },
514
- * { vector: embedding2, topK: 10, filter: { category: 'tech' } }
514
+ * { vector: embedding2, topK: 10, filter: { condition: { type: 'eq', field: 'category', value: 'tech' } } }
515
515
  * ]
516
516
  * });
517
517
  * responses.forEach((resp, i) => {
@@ -873,5 +873,184 @@ declare function proceduralLearn(request: ProceduralLearnRequest): Promise<void>
873
873
  * @returns Array of matching procedures
874
874
  */
875
875
  declare function proceduralRecall(request: ProceduralRecallRequest): Promise<ProceduralMatchResult[]>;
876
+ /** Request for sparse-only vector search. */
877
+ interface SparseSearchRequest {
878
+ /** Target collection name. */
879
+ collection: string;
880
+ /** Sparse vector as `{ "<dimIndex>": weight, ... }`. */
881
+ sparseVector: Record<string, number>;
882
+ /** Number of results to return. Default: 10. */
883
+ topK?: number;
884
+ /** Optional named sparse index to query. */
885
+ indexName?: string;
886
+ }
887
+ /** Request for hybrid dense + sparse search. */
888
+ interface HybridSparseSearchRequest {
889
+ /** Target collection name. */
890
+ collection: string;
891
+ /** Dense query vector. */
892
+ vector: number[];
893
+ /** Sparse vector as `{ "<dimIndex>": weight, ... }`. */
894
+ sparseVector: Record<string, number>;
895
+ /** Number of results to return. Default: 10. */
896
+ topK?: number;
897
+ }
898
+ /** A {@link PointInput} carrying an optional sparse vector. */
899
+ interface SparsePointInput extends PointInput {
900
+ /** Optional sparse vector as `{ "<dimIndex>": weight, ... }`. */
901
+ sparseVector?: Record<string, number>;
902
+ }
903
+ /** Request to upsert points with optional sparse vectors. */
904
+ interface SparseUpsertRequest {
905
+ /** Target collection name. */
906
+ collection: string;
907
+ /** Points to insert or update. */
908
+ points: SparsePointInput[];
909
+ }
910
+ /**
911
+ * Searches a collection using a sparse vector (inverted-index retrieval).
912
+ *
913
+ * @param request - Sparse query parameters
914
+ * @returns Search results ordered by relevance
915
+ * @throws {CommandError} If the collection does not exist
916
+ *
917
+ * @example
918
+ * ```typescript
919
+ * const res = await sparseSearch({
920
+ * collection: 'docs',
921
+ * sparseVector: { '12': 0.8, '57': 0.6 },
922
+ * topK: 10,
923
+ * });
924
+ * ```
925
+ */
926
+ declare function sparseSearch(request: SparseSearchRequest): Promise<SearchResponse>;
927
+ /**
928
+ * Searches a collection using both a dense and a sparse vector, fusing results.
929
+ *
930
+ * @param request - Hybrid dense + sparse query parameters
931
+ * @returns Fused search results ordered by relevance
932
+ * @throws {CommandError} If the collection does not exist
933
+ */
934
+ declare function hybridSparseSearch(request: HybridSparseSearchRequest): Promise<SearchResponse>;
935
+ /**
936
+ * Upserts points with optional sparse vectors for hybrid retrieval.
937
+ *
938
+ * @param request - Points to insert or update
939
+ * @returns Number of points written
940
+ * @throws {CommandError} On dimension mismatch or write failure
941
+ */
942
+ declare function sparseUpsert(request: SparseUpsertRequest): Promise<number>;
943
+ /** Request to train a Product Quantizer over a collection's vectors. */
944
+ interface TrainPqRequest {
945
+ /** Target collection name. */
946
+ collection: string;
947
+ /** Number of sub-quantizers. */
948
+ m?: number;
949
+ /** Number of centroids per sub-quantizer. */
950
+ k?: number;
951
+ /** Whether to use Optimized Product Quantization (OPQ). */
952
+ opq?: boolean;
953
+ }
954
+ /**
955
+ * Trains a Product Quantizer on the collection's existing vectors.
956
+ *
957
+ * @param request - PQ training parameters
958
+ * @returns A human-readable training summary
959
+ * @throws {CommandError} If the collection has too few vectors to train
960
+ */
961
+ declare function trainPq(request: TrainPqRequest): Promise<string>;
962
+ /** Request to stream-insert points (requires the `persistence` feature). */
963
+ interface StreamInsertRequest {
964
+ /** Target collection name. */
965
+ collection: string;
966
+ /** Points to stream-insert. */
967
+ points: PointInput[];
968
+ }
969
+ /**
970
+ * Streams a batch of points into a collection for high-throughput ingestion.
971
+ *
972
+ * Only available when the plugin is built with the `persistence` feature.
973
+ *
974
+ * @param request - Points to stream-insert
975
+ * @returns Number of points written
976
+ * @throws {CommandError} If persistence is disabled or the write fails
977
+ */
978
+ declare function streamInsert(request: StreamInsertRequest): Promise<number>;
979
+ /** Request to create a secondary index on a metadata field. */
980
+ interface CreateIndexRequest {
981
+ /** Target collection name. */
982
+ collection: string;
983
+ /** Metadata field name to index. */
984
+ fieldName: string;
985
+ }
986
+ /** Request to drop a secondary index on a metadata field. */
987
+ interface DropIndexRequest {
988
+ /** Target collection name. */
989
+ collection: string;
990
+ /** Metadata field name whose index to drop. */
991
+ fieldName: string;
992
+ }
993
+ /** Request to list secondary indexes on a collection. */
994
+ interface ListIndexesRequest {
995
+ /** Target collection name. */
996
+ collection: string;
997
+ }
998
+ /** A single secondary index entry. */
999
+ interface IndexInfoOutput {
1000
+ /** Node label (or field name for secondary indexes). */
1001
+ label: string;
1002
+ /** Property name. */
1003
+ property: string;
1004
+ /** Index type (`hash`, `range`, or `secondary`). */
1005
+ indexType: string;
1006
+ /** Number of unique values indexed. */
1007
+ cardinality: number;
1008
+ /** Memory usage in bytes. */
1009
+ memoryBytes: number;
1010
+ }
1011
+ /**
1012
+ * Creates a secondary index on a metadata field for faster filtered search.
1013
+ *
1014
+ * @param request - Index target
1015
+ * @throws {CommandError} If the collection does not exist
1016
+ */
1017
+ declare function createIndex(request: CreateIndexRequest): Promise<void>;
1018
+ /**
1019
+ * Drops a secondary index on a metadata field.
1020
+ *
1021
+ * @param request - Index target
1022
+ * @returns `true` if an index was removed, `false` if none existed
1023
+ * @throws {CommandError} If the collection does not exist
1024
+ */
1025
+ declare function dropIndex(request: DropIndexRequest): Promise<boolean>;
1026
+ /**
1027
+ * Lists all secondary indexes on a collection.
1028
+ *
1029
+ * @param request - Target collection
1030
+ * @returns Array of index descriptors
1031
+ * @throws {CommandError} If the collection does not exist
1032
+ */
1033
+ declare function listIndexes(request: ListIndexesRequest): Promise<IndexInfoOutput[]>;
1034
+ /** Request for multi-source parallel BFS traversal. */
1035
+ interface TraverseGraphParallelRequest {
1036
+ /** Target collection name. */
1037
+ collection: string;
1038
+ /** Source node IDs to start traversal from. */
1039
+ sources: number[];
1040
+ /** Maximum traversal depth. Default: 3. */
1041
+ maxDepth?: number;
1042
+ /** Maximum results to return. Default: 100. */
1043
+ limit?: number;
1044
+ /** Optional relationship types to follow. */
1045
+ relTypes?: string[];
1046
+ }
1047
+ /**
1048
+ * Runs a multi-source parallel BFS traversal over a graph collection.
1049
+ *
1050
+ * @param request - Parallel traversal parameters
1051
+ * @returns Array of traversal result nodes
1052
+ * @throws {CommandError} If the collection is not a graph collection
1053
+ */
1054
+ declare function traverseGraphParallel(request: TraverseGraphParallelRequest): Promise<TraversalOutput[]>;
876
1055
 
877
- export { type AddEdgeRequest, type BatchSearchRequest, type CollectionInfo, type CommandError, type CreateCollectionRequest, type CreateGraphCollectionRequest, type CreateMetadataCollectionRequest, type DeletePointsRequest, type DistanceMetric, type EdgeOutput, type EpisodicRecentRequest, type EpisodicRecordRequest, type EpisodicResult, type FusionParams, type FusionStrategy, type GetEdgesRequest, type GetNodeDegreeRequest, type GetPointsRequest, type HybridResult, type HybridSearchRequest, type IndividualSearchRequest, type MetadataPointInput, type MultiQuerySearchRequest, type NodeDegreeOutput, type PointInput, type PointOutput, type ProceduralLearnRequest, type ProceduralMatchResult, type ProceduralRecallRequest, type QueryRequest, type QueryResponse, type ScrollRequest, type ScrollResponse, type SearchRequest, type SearchResponse, type SearchResult, type SemanticQueryRequest, type SemanticQueryResult, type SemanticStoreRequest, type StorageMode, type TextSearchRequest, type TraversalOutput, type TraverseGraphRequest, type UpsertMetadataRequest, type UpsertRequest, addEdge, batchSearch, createCollection, createGraphCollection, createMetadataCollection, deleteCollection, deletePoints, episodicRecent, episodicRecord, flush, getCollection, getEdges, getNodeDegree, getPoints, hybridSearch, isEmpty, listCollections, multiQuerySearch, proceduralLearn, proceduralRecall, query, scrollCollection, search, semanticQuery, semanticStore, textSearch, traverseGraph, upsert, upsertMetadata };
1056
+ export { type AddEdgeRequest, type BatchSearchRequest, type CollectionInfo, type CommandError, type CreateCollectionRequest, type CreateGraphCollectionRequest, type CreateIndexRequest, type CreateMetadataCollectionRequest, type DeletePointsRequest, type DistanceMetric, type DropIndexRequest, type EdgeOutput, type EpisodicRecentRequest, type EpisodicRecordRequest, type EpisodicResult, type FusionParams, type FusionStrategy, type GetEdgesRequest, type GetNodeDegreeRequest, type GetPointsRequest, type HybridResult, type HybridSearchRequest, type HybridSparseSearchRequest, type IndexInfoOutput, type IndividualSearchRequest, type ListIndexesRequest, type MetadataPointInput, type MultiQuerySearchRequest, type NodeDegreeOutput, type PointInput, type PointOutput, type ProceduralLearnRequest, type ProceduralMatchResult, type ProceduralRecallRequest, type QueryRequest, type QueryResponse, type ScrollRequest, type ScrollResponse, type SearchRequest, type SearchResponse, type SearchResult, type SemanticQueryRequest, type SemanticQueryResult, type SemanticStoreRequest, type SparsePointInput, type SparseSearchRequest, type SparseUpsertRequest, type StorageMode, type StreamInsertRequest, type TextSearchRequest, type TrainPqRequest, type TraversalOutput, type TraverseGraphParallelRequest, type TraverseGraphRequest, type UpsertMetadataRequest, type UpsertRequest, addEdge, batchSearch, createCollection, createGraphCollection, createIndex, createMetadataCollection, deleteCollection, deletePoints, dropIndex, episodicRecent, episodicRecord, flush, getCollection, getEdges, getNodeDegree, getPoints, hybridSearch, hybridSparseSearch, isEmpty, listCollections, listIndexes, multiQuerySearch, proceduralLearn, proceduralRecall, query, scrollCollection, search, semanticQuery, semanticStore, sparseSearch, sparseUpsert, streamInsert, textSearch, trainPq, traverseGraph, traverseGraphParallel, upsert, upsertMetadata };
package/dist/index.d.ts CHANGED
@@ -511,7 +511,7 @@ declare function deletePoints(request: DeletePointsRequest): Promise<void>;
511
511
  * collection: 'documents',
512
512
  * searches: [
513
513
  * { vector: embedding1, topK: 5 },
514
- * { vector: embedding2, topK: 10, filter: { category: 'tech' } }
514
+ * { vector: embedding2, topK: 10, filter: { condition: { type: 'eq', field: 'category', value: 'tech' } } }
515
515
  * ]
516
516
  * });
517
517
  * responses.forEach((resp, i) => {
@@ -873,5 +873,184 @@ declare function proceduralLearn(request: ProceduralLearnRequest): Promise<void>
873
873
  * @returns Array of matching procedures
874
874
  */
875
875
  declare function proceduralRecall(request: ProceduralRecallRequest): Promise<ProceduralMatchResult[]>;
876
+ /** Request for sparse-only vector search. */
877
+ interface SparseSearchRequest {
878
+ /** Target collection name. */
879
+ collection: string;
880
+ /** Sparse vector as `{ "<dimIndex>": weight, ... }`. */
881
+ sparseVector: Record<string, number>;
882
+ /** Number of results to return. Default: 10. */
883
+ topK?: number;
884
+ /** Optional named sparse index to query. */
885
+ indexName?: string;
886
+ }
887
+ /** Request for hybrid dense + sparse search. */
888
+ interface HybridSparseSearchRequest {
889
+ /** Target collection name. */
890
+ collection: string;
891
+ /** Dense query vector. */
892
+ vector: number[];
893
+ /** Sparse vector as `{ "<dimIndex>": weight, ... }`. */
894
+ sparseVector: Record<string, number>;
895
+ /** Number of results to return. Default: 10. */
896
+ topK?: number;
897
+ }
898
+ /** A {@link PointInput} carrying an optional sparse vector. */
899
+ interface SparsePointInput extends PointInput {
900
+ /** Optional sparse vector as `{ "<dimIndex>": weight, ... }`. */
901
+ sparseVector?: Record<string, number>;
902
+ }
903
+ /** Request to upsert points with optional sparse vectors. */
904
+ interface SparseUpsertRequest {
905
+ /** Target collection name. */
906
+ collection: string;
907
+ /** Points to insert or update. */
908
+ points: SparsePointInput[];
909
+ }
910
+ /**
911
+ * Searches a collection using a sparse vector (inverted-index retrieval).
912
+ *
913
+ * @param request - Sparse query parameters
914
+ * @returns Search results ordered by relevance
915
+ * @throws {CommandError} If the collection does not exist
916
+ *
917
+ * @example
918
+ * ```typescript
919
+ * const res = await sparseSearch({
920
+ * collection: 'docs',
921
+ * sparseVector: { '12': 0.8, '57': 0.6 },
922
+ * topK: 10,
923
+ * });
924
+ * ```
925
+ */
926
+ declare function sparseSearch(request: SparseSearchRequest): Promise<SearchResponse>;
927
+ /**
928
+ * Searches a collection using both a dense and a sparse vector, fusing results.
929
+ *
930
+ * @param request - Hybrid dense + sparse query parameters
931
+ * @returns Fused search results ordered by relevance
932
+ * @throws {CommandError} If the collection does not exist
933
+ */
934
+ declare function hybridSparseSearch(request: HybridSparseSearchRequest): Promise<SearchResponse>;
935
+ /**
936
+ * Upserts points with optional sparse vectors for hybrid retrieval.
937
+ *
938
+ * @param request - Points to insert or update
939
+ * @returns Number of points written
940
+ * @throws {CommandError} On dimension mismatch or write failure
941
+ */
942
+ declare function sparseUpsert(request: SparseUpsertRequest): Promise<number>;
943
+ /** Request to train a Product Quantizer over a collection's vectors. */
944
+ interface TrainPqRequest {
945
+ /** Target collection name. */
946
+ collection: string;
947
+ /** Number of sub-quantizers. */
948
+ m?: number;
949
+ /** Number of centroids per sub-quantizer. */
950
+ k?: number;
951
+ /** Whether to use Optimized Product Quantization (OPQ). */
952
+ opq?: boolean;
953
+ }
954
+ /**
955
+ * Trains a Product Quantizer on the collection's existing vectors.
956
+ *
957
+ * @param request - PQ training parameters
958
+ * @returns A human-readable training summary
959
+ * @throws {CommandError} If the collection has too few vectors to train
960
+ */
961
+ declare function trainPq(request: TrainPqRequest): Promise<string>;
962
+ /** Request to stream-insert points (requires the `persistence` feature). */
963
+ interface StreamInsertRequest {
964
+ /** Target collection name. */
965
+ collection: string;
966
+ /** Points to stream-insert. */
967
+ points: PointInput[];
968
+ }
969
+ /**
970
+ * Streams a batch of points into a collection for high-throughput ingestion.
971
+ *
972
+ * Only available when the plugin is built with the `persistence` feature.
973
+ *
974
+ * @param request - Points to stream-insert
975
+ * @returns Number of points written
976
+ * @throws {CommandError} If persistence is disabled or the write fails
977
+ */
978
+ declare function streamInsert(request: StreamInsertRequest): Promise<number>;
979
+ /** Request to create a secondary index on a metadata field. */
980
+ interface CreateIndexRequest {
981
+ /** Target collection name. */
982
+ collection: string;
983
+ /** Metadata field name to index. */
984
+ fieldName: string;
985
+ }
986
+ /** Request to drop a secondary index on a metadata field. */
987
+ interface DropIndexRequest {
988
+ /** Target collection name. */
989
+ collection: string;
990
+ /** Metadata field name whose index to drop. */
991
+ fieldName: string;
992
+ }
993
+ /** Request to list secondary indexes on a collection. */
994
+ interface ListIndexesRequest {
995
+ /** Target collection name. */
996
+ collection: string;
997
+ }
998
+ /** A single secondary index entry. */
999
+ interface IndexInfoOutput {
1000
+ /** Node label (or field name for secondary indexes). */
1001
+ label: string;
1002
+ /** Property name. */
1003
+ property: string;
1004
+ /** Index type (`hash`, `range`, or `secondary`). */
1005
+ indexType: string;
1006
+ /** Number of unique values indexed. */
1007
+ cardinality: number;
1008
+ /** Memory usage in bytes. */
1009
+ memoryBytes: number;
1010
+ }
1011
+ /**
1012
+ * Creates a secondary index on a metadata field for faster filtered search.
1013
+ *
1014
+ * @param request - Index target
1015
+ * @throws {CommandError} If the collection does not exist
1016
+ */
1017
+ declare function createIndex(request: CreateIndexRequest): Promise<void>;
1018
+ /**
1019
+ * Drops a secondary index on a metadata field.
1020
+ *
1021
+ * @param request - Index target
1022
+ * @returns `true` if an index was removed, `false` if none existed
1023
+ * @throws {CommandError} If the collection does not exist
1024
+ */
1025
+ declare function dropIndex(request: DropIndexRequest): Promise<boolean>;
1026
+ /**
1027
+ * Lists all secondary indexes on a collection.
1028
+ *
1029
+ * @param request - Target collection
1030
+ * @returns Array of index descriptors
1031
+ * @throws {CommandError} If the collection does not exist
1032
+ */
1033
+ declare function listIndexes(request: ListIndexesRequest): Promise<IndexInfoOutput[]>;
1034
+ /** Request for multi-source parallel BFS traversal. */
1035
+ interface TraverseGraphParallelRequest {
1036
+ /** Target collection name. */
1037
+ collection: string;
1038
+ /** Source node IDs to start traversal from. */
1039
+ sources: number[];
1040
+ /** Maximum traversal depth. Default: 3. */
1041
+ maxDepth?: number;
1042
+ /** Maximum results to return. Default: 100. */
1043
+ limit?: number;
1044
+ /** Optional relationship types to follow. */
1045
+ relTypes?: string[];
1046
+ }
1047
+ /**
1048
+ * Runs a multi-source parallel BFS traversal over a graph collection.
1049
+ *
1050
+ * @param request - Parallel traversal parameters
1051
+ * @returns Array of traversal result nodes
1052
+ * @throws {CommandError} If the collection is not a graph collection
1053
+ */
1054
+ declare function traverseGraphParallel(request: TraverseGraphParallelRequest): Promise<TraversalOutput[]>;
876
1055
 
877
- export { type AddEdgeRequest, type BatchSearchRequest, type CollectionInfo, type CommandError, type CreateCollectionRequest, type CreateGraphCollectionRequest, type CreateMetadataCollectionRequest, type DeletePointsRequest, type DistanceMetric, type EdgeOutput, type EpisodicRecentRequest, type EpisodicRecordRequest, type EpisodicResult, type FusionParams, type FusionStrategy, type GetEdgesRequest, type GetNodeDegreeRequest, type GetPointsRequest, type HybridResult, type HybridSearchRequest, type IndividualSearchRequest, type MetadataPointInput, type MultiQuerySearchRequest, type NodeDegreeOutput, type PointInput, type PointOutput, type ProceduralLearnRequest, type ProceduralMatchResult, type ProceduralRecallRequest, type QueryRequest, type QueryResponse, type ScrollRequest, type ScrollResponse, type SearchRequest, type SearchResponse, type SearchResult, type SemanticQueryRequest, type SemanticQueryResult, type SemanticStoreRequest, type StorageMode, type TextSearchRequest, type TraversalOutput, type TraverseGraphRequest, type UpsertMetadataRequest, type UpsertRequest, addEdge, batchSearch, createCollection, createGraphCollection, createMetadataCollection, deleteCollection, deletePoints, episodicRecent, episodicRecord, flush, getCollection, getEdges, getNodeDegree, getPoints, hybridSearch, isEmpty, listCollections, multiQuerySearch, proceduralLearn, proceduralRecall, query, scrollCollection, search, semanticQuery, semanticStore, textSearch, traverseGraph, upsert, upsertMetadata };
1056
+ export { type AddEdgeRequest, type BatchSearchRequest, type CollectionInfo, type CommandError, type CreateCollectionRequest, type CreateGraphCollectionRequest, type CreateIndexRequest, type CreateMetadataCollectionRequest, type DeletePointsRequest, type DistanceMetric, type DropIndexRequest, type EdgeOutput, type EpisodicRecentRequest, type EpisodicRecordRequest, type EpisodicResult, type FusionParams, type FusionStrategy, type GetEdgesRequest, type GetNodeDegreeRequest, type GetPointsRequest, type HybridResult, type HybridSearchRequest, type HybridSparseSearchRequest, type IndexInfoOutput, type IndividualSearchRequest, type ListIndexesRequest, type MetadataPointInput, type MultiQuerySearchRequest, type NodeDegreeOutput, type PointInput, type PointOutput, type ProceduralLearnRequest, type ProceduralMatchResult, type ProceduralRecallRequest, type QueryRequest, type QueryResponse, type ScrollRequest, type ScrollResponse, type SearchRequest, type SearchResponse, type SearchResult, type SemanticQueryRequest, type SemanticQueryResult, type SemanticStoreRequest, type SparsePointInput, type SparseSearchRequest, type SparseUpsertRequest, type StorageMode, type StreamInsertRequest, type TextSearchRequest, type TrainPqRequest, type TraversalOutput, type TraverseGraphParallelRequest, type TraverseGraphRequest, type UpsertMetadataRequest, type UpsertRequest, addEdge, batchSearch, createCollection, createGraphCollection, createIndex, createMetadataCollection, deleteCollection, deletePoints, dropIndex, episodicRecent, episodicRecord, flush, getCollection, getEdges, getNodeDegree, getPoints, hybridSearch, hybridSparseSearch, isEmpty, listCollections, listIndexes, multiQuerySearch, proceduralLearn, proceduralRecall, query, scrollCollection, search, semanticQuery, semanticStore, sparseSearch, sparseUpsert, streamInsert, textSearch, trainPq, traverseGraph, traverseGraphParallel, upsert, upsertMetadata };
package/dist/index.js CHANGED
@@ -24,9 +24,11 @@ __export(index_exports, {
24
24
  batchSearch: () => batchSearch,
25
25
  createCollection: () => createCollection,
26
26
  createGraphCollection: () => createGraphCollection,
27
+ createIndex: () => createIndex,
27
28
  createMetadataCollection: () => createMetadataCollection,
28
29
  deleteCollection: () => deleteCollection,
29
30
  deletePoints: () => deletePoints,
31
+ dropIndex: () => dropIndex,
30
32
  episodicRecent: () => episodicRecent,
31
33
  episodicRecord: () => episodicRecord,
32
34
  flush: () => flush,
@@ -35,8 +37,10 @@ __export(index_exports, {
35
37
  getNodeDegree: () => getNodeDegree,
36
38
  getPoints: () => getPoints,
37
39
  hybridSearch: () => hybridSearch,
40
+ hybridSparseSearch: () => hybridSparseSearch,
38
41
  isEmpty: () => isEmpty,
39
42
  listCollections: () => listCollections,
43
+ listIndexes: () => listIndexes,
40
44
  multiQuerySearch: () => multiQuerySearch,
41
45
  proceduralLearn: () => proceduralLearn,
42
46
  proceduralRecall: () => proceduralRecall,
@@ -45,109 +49,143 @@ __export(index_exports, {
45
49
  search: () => search,
46
50
  semanticQuery: () => semanticQuery,
47
51
  semanticStore: () => semanticStore,
52
+ sparseSearch: () => sparseSearch,
53
+ sparseUpsert: () => sparseUpsert,
54
+ streamInsert: () => streamInsert,
48
55
  textSearch: () => textSearch,
56
+ trainPq: () => trainPq,
49
57
  traverseGraph: () => traverseGraph,
58
+ traverseGraphParallel: () => traverseGraphParallel,
50
59
  upsert: () => upsert,
51
60
  upsertMetadata: () => upsertMetadata
52
61
  });
53
62
  module.exports = __toCommonJS(index_exports);
54
63
  var import_core = require("@tauri-apps/api/core");
55
- async function createCollection(request) {
64
+ function createCollection(request) {
56
65
  return (0, import_core.invoke)("plugin:velesdb|create_collection", { request });
57
66
  }
58
- async function createMetadataCollection(request) {
67
+ function createMetadataCollection(request) {
59
68
  return (0, import_core.invoke)("plugin:velesdb|create_metadata_collection", { request });
60
69
  }
61
70
  async function deleteCollection(name) {
62
- return (0, import_core.invoke)("plugin:velesdb|delete_collection", { name });
71
+ await (0, import_core.invoke)("plugin:velesdb|delete_collection", { name });
63
72
  }
64
- async function listCollections() {
73
+ function listCollections() {
65
74
  return (0, import_core.invoke)("plugin:velesdb|list_collections");
66
75
  }
67
- async function getCollection(name) {
76
+ function getCollection(name) {
68
77
  return (0, import_core.invoke)("plugin:velesdb|get_collection", { name });
69
78
  }
70
- async function upsert(request) {
79
+ function upsert(request) {
71
80
  return (0, import_core.invoke)("plugin:velesdb|upsert", { request });
72
81
  }
73
- async function upsertMetadata(request) {
82
+ function upsertMetadata(request) {
74
83
  return (0, import_core.invoke)("plugin:velesdb|upsert_metadata", { request });
75
84
  }
76
- async function search(request) {
85
+ function search(request) {
77
86
  return (0, import_core.invoke)("plugin:velesdb|search", { request });
78
87
  }
79
- async function textSearch(request) {
88
+ function textSearch(request) {
80
89
  return (0, import_core.invoke)("plugin:velesdb|text_search", { request });
81
90
  }
82
- async function hybridSearch(request) {
91
+ function hybridSearch(request) {
83
92
  return (0, import_core.invoke)("plugin:velesdb|hybrid_search", { request });
84
93
  }
85
- async function query(request) {
94
+ function query(request) {
86
95
  return (0, import_core.invoke)("plugin:velesdb|query", { request });
87
96
  }
88
- async function getPoints(request) {
97
+ function getPoints(request) {
89
98
  return (0, import_core.invoke)("plugin:velesdb|get_points", { request });
90
99
  }
91
100
  async function deletePoints(request) {
92
- return (0, import_core.invoke)("plugin:velesdb|delete_points", { request });
101
+ await (0, import_core.invoke)("plugin:velesdb|delete_points", { request });
93
102
  }
94
- async function batchSearch(request) {
103
+ function batchSearch(request) {
95
104
  return (0, import_core.invoke)("plugin:velesdb|batch_search", { request });
96
105
  }
97
- async function multiQuerySearch(request) {
106
+ function multiQuerySearch(request) {
98
107
  return (0, import_core.invoke)("plugin:velesdb|multi_query_search", { request });
99
108
  }
100
- async function isEmpty(name) {
109
+ function isEmpty(name) {
101
110
  return (0, import_core.invoke)("plugin:velesdb|is_empty", { name });
102
111
  }
103
112
  async function flush(name) {
104
- return (0, import_core.invoke)("plugin:velesdb|flush", { name });
113
+ await (0, import_core.invoke)("plugin:velesdb|flush", { name });
105
114
  }
106
115
  async function addEdge(request) {
107
- return (0, import_core.invoke)("plugin:velesdb|add_edge", { request });
116
+ await (0, import_core.invoke)("plugin:velesdb|add_edge", { request });
108
117
  }
109
- async function getEdges(request) {
118
+ function getEdges(request) {
110
119
  return (0, import_core.invoke)("plugin:velesdb|get_edges", { request });
111
120
  }
112
- async function traverseGraph(request) {
121
+ function traverseGraph(request) {
113
122
  return (0, import_core.invoke)("plugin:velesdb|traverse_graph", { request });
114
123
  }
115
- async function getNodeDegree(request) {
124
+ function getNodeDegree(request) {
116
125
  return (0, import_core.invoke)("plugin:velesdb|get_node_degree", { request });
117
126
  }
118
- async function createGraphCollection(request) {
127
+ function createGraphCollection(request) {
119
128
  return (0, import_core.invoke)("plugin:velesdb|create_graph_collection", { request });
120
129
  }
121
- async function scrollCollection(request) {
130
+ function scrollCollection(request) {
122
131
  return (0, import_core.invoke)("plugin:velesdb|scroll_collection", { request });
123
132
  }
124
133
  async function semanticStore(request) {
125
- return (0, import_core.invoke)("plugin:velesdb|semantic_store", { request });
134
+ await (0, import_core.invoke)("plugin:velesdb|semantic_store", { request });
126
135
  }
127
- async function semanticQuery(request) {
136
+ function semanticQuery(request) {
128
137
  return (0, import_core.invoke)("plugin:velesdb|semantic_query", { request });
129
138
  }
130
139
  async function episodicRecord(request) {
131
- return (0, import_core.invoke)("plugin:velesdb|episodic_record", { request });
140
+ await (0, import_core.invoke)("plugin:velesdb|episodic_record", { request });
132
141
  }
133
- async function episodicRecent(request) {
142
+ function episodicRecent(request) {
134
143
  return (0, import_core.invoke)("plugin:velesdb|episodic_recent", { request });
135
144
  }
136
145
  async function proceduralLearn(request) {
137
- return (0, import_core.invoke)("plugin:velesdb|procedural_learn", { request });
146
+ await (0, import_core.invoke)("plugin:velesdb|procedural_learn", { request });
138
147
  }
139
- async function proceduralRecall(request) {
148
+ function proceduralRecall(request) {
140
149
  return (0, import_core.invoke)("plugin:velesdb|procedural_recall", { request });
141
150
  }
151
+ function sparseSearch(request) {
152
+ return (0, import_core.invoke)("plugin:velesdb|sparse_search", { request });
153
+ }
154
+ function hybridSparseSearch(request) {
155
+ return (0, import_core.invoke)("plugin:velesdb|hybrid_sparse_search", { request });
156
+ }
157
+ function sparseUpsert(request) {
158
+ return (0, import_core.invoke)("plugin:velesdb|sparse_upsert", { request });
159
+ }
160
+ function trainPq(request) {
161
+ return (0, import_core.invoke)("plugin:velesdb|train_pq", { request });
162
+ }
163
+ function streamInsert(request) {
164
+ return (0, import_core.invoke)("plugin:velesdb|stream_insert", { request });
165
+ }
166
+ async function createIndex(request) {
167
+ await (0, import_core.invoke)("plugin:velesdb|create_index", { request });
168
+ }
169
+ function dropIndex(request) {
170
+ return (0, import_core.invoke)("plugin:velesdb|drop_index", { request });
171
+ }
172
+ function listIndexes(request) {
173
+ return (0, import_core.invoke)("plugin:velesdb|list_indexes", { request });
174
+ }
175
+ function traverseGraphParallel(request) {
176
+ return (0, import_core.invoke)("plugin:velesdb|traverse_graph_parallel", { request });
177
+ }
142
178
  // Annotate the CommonJS export names for ESM import in node:
143
179
  0 && (module.exports = {
144
180
  addEdge,
145
181
  batchSearch,
146
182
  createCollection,
147
183
  createGraphCollection,
184
+ createIndex,
148
185
  createMetadataCollection,
149
186
  deleteCollection,
150
187
  deletePoints,
188
+ dropIndex,
151
189
  episodicRecent,
152
190
  episodicRecord,
153
191
  flush,
@@ -156,8 +194,10 @@ async function proceduralRecall(request) {
156
194
  getNodeDegree,
157
195
  getPoints,
158
196
  hybridSearch,
197
+ hybridSparseSearch,
159
198
  isEmpty,
160
199
  listCollections,
200
+ listIndexes,
161
201
  multiQuerySearch,
162
202
  proceduralLearn,
163
203
  proceduralRecall,
@@ -166,8 +206,13 @@ async function proceduralRecall(request) {
166
206
  search,
167
207
  semanticQuery,
168
208
  semanticStore,
209
+ sparseSearch,
210
+ sparseUpsert,
211
+ streamInsert,
169
212
  textSearch,
213
+ trainPq,
170
214
  traverseGraph,
215
+ traverseGraphParallel,
171
216
  upsert,
172
217
  upsertMetadata
173
218
  });
package/dist/index.mjs CHANGED
@@ -1,100 +1,129 @@
1
1
  // index.ts
2
2
  import { invoke } from "@tauri-apps/api/core";
3
- async function createCollection(request) {
3
+ function createCollection(request) {
4
4
  return invoke("plugin:velesdb|create_collection", { request });
5
5
  }
6
- async function createMetadataCollection(request) {
6
+ function createMetadataCollection(request) {
7
7
  return invoke("plugin:velesdb|create_metadata_collection", { request });
8
8
  }
9
9
  async function deleteCollection(name) {
10
- return invoke("plugin:velesdb|delete_collection", { name });
10
+ await invoke("plugin:velesdb|delete_collection", { name });
11
11
  }
12
- async function listCollections() {
12
+ function listCollections() {
13
13
  return invoke("plugin:velesdb|list_collections");
14
14
  }
15
- async function getCollection(name) {
15
+ function getCollection(name) {
16
16
  return invoke("plugin:velesdb|get_collection", { name });
17
17
  }
18
- async function upsert(request) {
18
+ function upsert(request) {
19
19
  return invoke("plugin:velesdb|upsert", { request });
20
20
  }
21
- async function upsertMetadata(request) {
21
+ function upsertMetadata(request) {
22
22
  return invoke("plugin:velesdb|upsert_metadata", { request });
23
23
  }
24
- async function search(request) {
24
+ function search(request) {
25
25
  return invoke("plugin:velesdb|search", { request });
26
26
  }
27
- async function textSearch(request) {
27
+ function textSearch(request) {
28
28
  return invoke("plugin:velesdb|text_search", { request });
29
29
  }
30
- async function hybridSearch(request) {
30
+ function hybridSearch(request) {
31
31
  return invoke("plugin:velesdb|hybrid_search", { request });
32
32
  }
33
- async function query(request) {
33
+ function query(request) {
34
34
  return invoke("plugin:velesdb|query", { request });
35
35
  }
36
- async function getPoints(request) {
36
+ function getPoints(request) {
37
37
  return invoke("plugin:velesdb|get_points", { request });
38
38
  }
39
39
  async function deletePoints(request) {
40
- return invoke("plugin:velesdb|delete_points", { request });
40
+ await invoke("plugin:velesdb|delete_points", { request });
41
41
  }
42
- async function batchSearch(request) {
42
+ function batchSearch(request) {
43
43
  return invoke("plugin:velesdb|batch_search", { request });
44
44
  }
45
- async function multiQuerySearch(request) {
45
+ function multiQuerySearch(request) {
46
46
  return invoke("plugin:velesdb|multi_query_search", { request });
47
47
  }
48
- async function isEmpty(name) {
48
+ function isEmpty(name) {
49
49
  return invoke("plugin:velesdb|is_empty", { name });
50
50
  }
51
51
  async function flush(name) {
52
- return invoke("plugin:velesdb|flush", { name });
52
+ await invoke("plugin:velesdb|flush", { name });
53
53
  }
54
54
  async function addEdge(request) {
55
- return invoke("plugin:velesdb|add_edge", { request });
55
+ await invoke("plugin:velesdb|add_edge", { request });
56
56
  }
57
- async function getEdges(request) {
57
+ function getEdges(request) {
58
58
  return invoke("plugin:velesdb|get_edges", { request });
59
59
  }
60
- async function traverseGraph(request) {
60
+ function traverseGraph(request) {
61
61
  return invoke("plugin:velesdb|traverse_graph", { request });
62
62
  }
63
- async function getNodeDegree(request) {
63
+ function getNodeDegree(request) {
64
64
  return invoke("plugin:velesdb|get_node_degree", { request });
65
65
  }
66
- async function createGraphCollection(request) {
66
+ function createGraphCollection(request) {
67
67
  return invoke("plugin:velesdb|create_graph_collection", { request });
68
68
  }
69
- async function scrollCollection(request) {
69
+ function scrollCollection(request) {
70
70
  return invoke("plugin:velesdb|scroll_collection", { request });
71
71
  }
72
72
  async function semanticStore(request) {
73
- return invoke("plugin:velesdb|semantic_store", { request });
73
+ await invoke("plugin:velesdb|semantic_store", { request });
74
74
  }
75
- async function semanticQuery(request) {
75
+ function semanticQuery(request) {
76
76
  return invoke("plugin:velesdb|semantic_query", { request });
77
77
  }
78
78
  async function episodicRecord(request) {
79
- return invoke("plugin:velesdb|episodic_record", { request });
79
+ await invoke("plugin:velesdb|episodic_record", { request });
80
80
  }
81
- async function episodicRecent(request) {
81
+ function episodicRecent(request) {
82
82
  return invoke("plugin:velesdb|episodic_recent", { request });
83
83
  }
84
84
  async function proceduralLearn(request) {
85
- return invoke("plugin:velesdb|procedural_learn", { request });
85
+ await invoke("plugin:velesdb|procedural_learn", { request });
86
86
  }
87
- async function proceduralRecall(request) {
87
+ function proceduralRecall(request) {
88
88
  return invoke("plugin:velesdb|procedural_recall", { request });
89
89
  }
90
+ function sparseSearch(request) {
91
+ return invoke("plugin:velesdb|sparse_search", { request });
92
+ }
93
+ function hybridSparseSearch(request) {
94
+ return invoke("plugin:velesdb|hybrid_sparse_search", { request });
95
+ }
96
+ function sparseUpsert(request) {
97
+ return invoke("plugin:velesdb|sparse_upsert", { request });
98
+ }
99
+ function trainPq(request) {
100
+ return invoke("plugin:velesdb|train_pq", { request });
101
+ }
102
+ function streamInsert(request) {
103
+ return invoke("plugin:velesdb|stream_insert", { request });
104
+ }
105
+ async function createIndex(request) {
106
+ await invoke("plugin:velesdb|create_index", { request });
107
+ }
108
+ function dropIndex(request) {
109
+ return invoke("plugin:velesdb|drop_index", { request });
110
+ }
111
+ function listIndexes(request) {
112
+ return invoke("plugin:velesdb|list_indexes", { request });
113
+ }
114
+ function traverseGraphParallel(request) {
115
+ return invoke("plugin:velesdb|traverse_graph_parallel", { request });
116
+ }
90
117
  export {
91
118
  addEdge,
92
119
  batchSearch,
93
120
  createCollection,
94
121
  createGraphCollection,
122
+ createIndex,
95
123
  createMetadataCollection,
96
124
  deleteCollection,
97
125
  deletePoints,
126
+ dropIndex,
98
127
  episodicRecent,
99
128
  episodicRecord,
100
129
  flush,
@@ -103,8 +132,10 @@ export {
103
132
  getNodeDegree,
104
133
  getPoints,
105
134
  hybridSearch,
135
+ hybridSparseSearch,
106
136
  isEmpty,
107
137
  listCollections,
138
+ listIndexes,
108
139
  multiQuerySearch,
109
140
  proceduralLearn,
110
141
  proceduralRecall,
@@ -113,8 +144,13 @@ export {
113
144
  search,
114
145
  semanticQuery,
115
146
  semanticStore,
147
+ sparseSearch,
148
+ sparseUpsert,
149
+ streamInsert,
116
150
  textSearch,
151
+ trainPq,
117
152
  traverseGraph,
153
+ traverseGraphParallel,
118
154
  upsert,
119
155
  upsertMetadata
120
156
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wiscale/tauri-plugin-velesdb",
3
- "version": "1.15.0",
3
+ "version": "1.18.0",
4
4
  "description": "TypeScript bindings for the VelesDB Tauri plugin - Vector search in desktop apps",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -14,7 +14,8 @@
14
14
  },
15
15
  "files": [
16
16
  "dist",
17
- "README.md"
17
+ "README.md",
18
+ "LICENSE"
18
19
  ],
19
20
  "scripts": {
20
21
  "build": "tsup index.ts --format cjs,esm --dts",
@@ -33,7 +34,7 @@
33
34
  "desktop"
34
35
  ],
35
36
  "author": "Cyberlife Coder",
36
- "license": "MIT",
37
+ "license": "SEE LICENSE IN LICENSE",
37
38
  "repository": {
38
39
  "type": "git",
39
40
  "url": "https://github.com/cyberlife-coder/VelesDB.git",