ruvector 0.2.23 → 0.2.25

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 (111) hide show
  1. package/bin/cli.js +211 -63
  2. package/dist/analysis/complexity.d.ts +52 -0
  3. package/dist/analysis/complexity.d.ts.map +1 -0
  4. package/dist/analysis/complexity.js +146 -0
  5. package/dist/analysis/index.d.ts +15 -0
  6. package/dist/analysis/index.d.ts.map +1 -0
  7. package/dist/analysis/index.js +38 -0
  8. package/dist/analysis/patterns.d.ts +71 -0
  9. package/dist/analysis/patterns.d.ts.map +1 -0
  10. package/dist/analysis/patterns.js +243 -0
  11. package/dist/analysis/security.d.ts +51 -0
  12. package/dist/analysis/security.d.ts.map +1 -0
  13. package/dist/analysis/security.js +139 -0
  14. package/dist/core/adaptive-embedder.d.ts +156 -0
  15. package/dist/core/adaptive-embedder.d.ts.map +1 -0
  16. package/dist/core/adaptive-embedder.js +838 -0
  17. package/dist/core/agentdb-fast.d.ts +149 -0
  18. package/dist/core/agentdb-fast.d.ts.map +1 -0
  19. package/dist/core/agentdb-fast.js +301 -0
  20. package/dist/core/ast-parser.d.ts +108 -0
  21. package/dist/core/ast-parser.d.ts.map +1 -0
  22. package/dist/core/ast-parser.js +602 -0
  23. package/dist/core/attention-fallbacks.d.ts +321 -0
  24. package/dist/core/attention-fallbacks.d.ts.map +1 -0
  25. package/dist/core/attention-fallbacks.js +552 -0
  26. package/dist/core/cluster-wrapper.d.ts +148 -0
  27. package/dist/core/cluster-wrapper.d.ts.map +1 -0
  28. package/dist/core/cluster-wrapper.js +271 -0
  29. package/dist/core/coverage-router.d.ts +88 -0
  30. package/dist/core/coverage-router.d.ts.map +1 -0
  31. package/dist/core/coverage-router.js +315 -0
  32. package/dist/core/diff-embeddings.d.ts +93 -0
  33. package/dist/core/diff-embeddings.d.ts.map +1 -0
  34. package/dist/core/diff-embeddings.js +334 -0
  35. package/dist/core/diskann-wrapper.d.ts +53 -0
  36. package/dist/core/diskann-wrapper.d.ts.map +1 -0
  37. package/dist/core/diskann-wrapper.js +105 -0
  38. package/dist/core/gnn-wrapper.d.ts +143 -0
  39. package/dist/core/gnn-wrapper.d.ts.map +1 -0
  40. package/dist/core/gnn-wrapper.js +213 -0
  41. package/dist/core/graph-algorithms.d.ts +83 -0
  42. package/dist/core/graph-algorithms.d.ts.map +1 -0
  43. package/dist/core/graph-algorithms.js +514 -0
  44. package/dist/core/graph-wrapper.d.ts +147 -0
  45. package/dist/core/graph-wrapper.d.ts.map +1 -0
  46. package/dist/core/graph-wrapper.js +299 -0
  47. package/dist/core/index.d.ts +50 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +92 -0
  50. package/dist/core/intelligence-engine.d.ts +258 -0
  51. package/dist/core/intelligence-engine.d.ts.map +1 -0
  52. package/dist/core/intelligence-engine.js +1030 -0
  53. package/dist/core/learning-engine.d.ts +160 -0
  54. package/dist/core/learning-engine.d.ts.map +1 -0
  55. package/dist/core/learning-engine.js +589 -0
  56. package/dist/core/neural-embeddings.d.ts +393 -0
  57. package/dist/core/neural-embeddings.d.ts.map +1 -0
  58. package/dist/core/neural-embeddings.js +1091 -0
  59. package/dist/core/neural-perf.d.ts +331 -0
  60. package/dist/core/neural-perf.d.ts.map +1 -0
  61. package/dist/core/neural-perf.js +704 -0
  62. package/dist/core/onnx/pkg/package.json +3 -0
  63. package/dist/core/onnx-embedder.d.ts +105 -0
  64. package/dist/core/onnx-embedder.d.ts.map +1 -0
  65. package/dist/core/onnx-embedder.js +410 -0
  66. package/dist/core/onnx-optimized.d.ts +109 -0
  67. package/dist/core/onnx-optimized.d.ts.map +1 -0
  68. package/dist/core/onnx-optimized.js +419 -0
  69. package/dist/core/parallel-intelligence.d.ts +109 -0
  70. package/dist/core/parallel-intelligence.d.ts.map +1 -0
  71. package/dist/core/parallel-intelligence.js +340 -0
  72. package/dist/core/parallel-workers.d.ts +177 -0
  73. package/dist/core/parallel-workers.d.ts.map +1 -0
  74. package/dist/core/parallel-workers.js +783 -0
  75. package/dist/core/router-wrapper.d.ts +75 -0
  76. package/dist/core/router-wrapper.d.ts.map +1 -0
  77. package/dist/core/router-wrapper.js +243 -0
  78. package/dist/core/rvf-wrapper.d.ts +86 -0
  79. package/dist/core/rvf-wrapper.d.ts.map +1 -0
  80. package/dist/core/rvf-wrapper.js +102 -0
  81. package/dist/core/sona-wrapper.d.ts +226 -0
  82. package/dist/core/sona-wrapper.d.ts.map +1 -0
  83. package/dist/core/sona-wrapper.js +282 -0
  84. package/dist/core/tensor-compress.d.ts +134 -0
  85. package/dist/core/tensor-compress.d.ts.map +1 -0
  86. package/dist/core/tensor-compress.js +432 -0
  87. package/dist/index.d.ts +106 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +258 -0
  90. package/dist/services/embedding-service.d.ts +136 -0
  91. package/dist/services/embedding-service.d.ts.map +1 -0
  92. package/dist/services/embedding-service.js +294 -0
  93. package/dist/services/index.d.ts +6 -0
  94. package/dist/services/index.d.ts.map +1 -0
  95. package/dist/services/index.js +26 -0
  96. package/dist/types.d.ts +145 -0
  97. package/dist/types.d.ts.map +1 -0
  98. package/dist/types.js +2 -0
  99. package/dist/workers/benchmark.d.ts +44 -0
  100. package/dist/workers/benchmark.d.ts.map +1 -0
  101. package/dist/workers/benchmark.js +230 -0
  102. package/dist/workers/index.d.ts +10 -0
  103. package/dist/workers/index.d.ts.map +1 -0
  104. package/dist/workers/index.js +25 -0
  105. package/dist/workers/native-worker.d.ts +76 -0
  106. package/dist/workers/native-worker.d.ts.map +1 -0
  107. package/dist/workers/native-worker.js +490 -0
  108. package/dist/workers/types.d.ts +69 -0
  109. package/dist/workers/types.d.ts.map +1 -0
  110. package/dist/workers/types.js +7 -0
  111. package/package.json +8 -7
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Router Wrapper - Semantic router for AI agent intent matching
3
+ *
4
+ * Wraps @ruvector/router for vector-based intent classification.
5
+ * Perfect for hooks to route tasks to the right agent.
6
+ */
7
+ export declare function isRouterAvailable(): boolean;
8
+ export interface Route {
9
+ name: string;
10
+ utterances: string[];
11
+ metadata?: Record<string, any>;
12
+ }
13
+ export interface RouteMatch {
14
+ route: string;
15
+ score: number;
16
+ metadata?: Record<string, any>;
17
+ }
18
+ /**
19
+ * Semantic Router for agent task routing
20
+ */
21
+ export declare class SemanticRouter {
22
+ private inner;
23
+ private routes;
24
+ constructor(options?: {
25
+ dimension?: number;
26
+ threshold?: number;
27
+ });
28
+ /**
29
+ * Set the embedder function for converting text to vectors.
30
+ * Required before match() can accept string input.
31
+ */
32
+ setEmbedder(embedder: (text: string) => Promise<Float32Array>): void;
33
+ /**
34
+ * Add a route with example utterances (sync, requires pre-computed embedding)
35
+ */
36
+ addRoute(name: string, utterances: string[], metadata?: Record<string, any>, embedding?: Float32Array | number[]): void;
37
+ /**
38
+ * Add a route with automatic embedding computation (requires setEmbedder)
39
+ */
40
+ addRouteAsync(name: string, utterances: string[], metadata?: Record<string, any>): Promise<void>;
41
+ /**
42
+ * Add multiple routes at once
43
+ */
44
+ addRoutes(routes: Route[]): void;
45
+ /**
46
+ * Match input to best route (async, accepts string if embedder is set, or Float32Array)
47
+ */
48
+ match(input: string | Float32Array): Promise<RouteMatch | null>;
49
+ /**
50
+ * Get top-k route matches (async)
51
+ */
52
+ matchTopK(input: string | Float32Array, k?: number): Promise<RouteMatch[]>;
53
+ /**
54
+ * Match with a pre-computed embedding (synchronous)
55
+ */
56
+ matchWithEmbedding(embedding: Float32Array, k?: number): RouteMatch[];
57
+ /**
58
+ * Get all registered routes
59
+ */
60
+ getRoutes(): Route[];
61
+ /**
62
+ * Remove a route
63
+ */
64
+ removeRoute(name: string): boolean;
65
+ /**
66
+ * Clear all routes
67
+ */
68
+ clear(): void;
69
+ }
70
+ /**
71
+ * Create a pre-configured agent router for hooks
72
+ */
73
+ export declare function createAgentRouter(): SemanticRouter;
74
+ export default SemanticRouter;
75
+ //# sourceMappingURL=router-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-wrapper.d.ts","sourceRoot":"","sources":["../../src/core/router-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,MAAM,CAAiC;gBAEnC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAQpE;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAIpE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,GAAG,IAAI;IAUvH;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAStG;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAMhC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAWrE;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IASnF;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,GAAE,MAAU,GAAG,UAAU,EAAE;IASxE;;OAEG;IACH,SAAS,IAAI,KAAK,EAAE;IAIpB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMlC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CA8FlD;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ /**
3
+ * Router Wrapper - Semantic router for AI agent intent matching
4
+ *
5
+ * Wraps @ruvector/router for vector-based intent classification.
6
+ * Perfect for hooks to route tasks to the right agent.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SemanticRouter = void 0;
10
+ exports.isRouterAvailable = isRouterAvailable;
11
+ exports.createAgentRouter = createAgentRouter;
12
+ let routerModule = null;
13
+ let loadError = null;
14
+ function getRouterModule() {
15
+ if (routerModule)
16
+ return routerModule;
17
+ if (loadError)
18
+ throw loadError;
19
+ try {
20
+ routerModule = require('@ruvector/router');
21
+ return routerModule;
22
+ }
23
+ catch (e) {
24
+ loadError = new Error(`@ruvector/router not installed: ${e.message}\n` +
25
+ `Install with: npm install @ruvector/router`);
26
+ throw loadError;
27
+ }
28
+ }
29
+ function isRouterAvailable() {
30
+ try {
31
+ getRouterModule();
32
+ return true;
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Semantic Router for agent task routing
40
+ */
41
+ class SemanticRouter {
42
+ constructor(options = {}) {
43
+ this.routes = new Map();
44
+ const router = getRouterModule();
45
+ this.inner = new router.SemanticRouter({
46
+ dimension: options.dimension ?? 384,
47
+ threshold: options.threshold ?? 0.7,
48
+ });
49
+ }
50
+ /**
51
+ * Set the embedder function for converting text to vectors.
52
+ * Required before match() can accept string input.
53
+ */
54
+ setEmbedder(embedder) {
55
+ this.inner.setEmbedder(embedder);
56
+ }
57
+ /**
58
+ * Add a route with example utterances (sync, requires pre-computed embedding)
59
+ */
60
+ addRoute(name, utterances, metadata, embedding) {
61
+ this.routes.set(name, { name, utterances, metadata });
62
+ this.inner.addIntent({
63
+ name,
64
+ utterances,
65
+ metadata,
66
+ embedding,
67
+ });
68
+ }
69
+ /**
70
+ * Add a route with automatic embedding computation (requires setEmbedder)
71
+ */
72
+ async addRouteAsync(name, utterances, metadata) {
73
+ this.routes.set(name, { name, utterances, metadata });
74
+ await this.inner.addIntentAsync({
75
+ name,
76
+ utterances,
77
+ metadata,
78
+ });
79
+ }
80
+ /**
81
+ * Add multiple routes at once
82
+ */
83
+ addRoutes(routes) {
84
+ for (const route of routes) {
85
+ this.addRoute(route.name, route.utterances, route.metadata);
86
+ }
87
+ }
88
+ /**
89
+ * Match input to best route (async, accepts string if embedder is set, or Float32Array)
90
+ */
91
+ async match(input) {
92
+ const results = await this.inner.route(input, 1);
93
+ if (!results || results.length === 0)
94
+ return null;
95
+ return {
96
+ route: results[0].intent,
97
+ score: results[0].score,
98
+ metadata: results[0].metadata,
99
+ };
100
+ }
101
+ /**
102
+ * Get top-k route matches (async)
103
+ */
104
+ async matchTopK(input, k = 3) {
105
+ const results = await this.inner.route(input, k);
106
+ return (results || []).map((r) => ({
107
+ route: r.intent,
108
+ score: r.score,
109
+ metadata: r.metadata,
110
+ }));
111
+ }
112
+ /**
113
+ * Match with a pre-computed embedding (synchronous)
114
+ */
115
+ matchWithEmbedding(embedding, k = 1) {
116
+ const results = this.inner.routeWithEmbedding(embedding, k);
117
+ return (results || []).map((r) => ({
118
+ route: r.intent,
119
+ score: r.score,
120
+ metadata: r.metadata,
121
+ }));
122
+ }
123
+ /**
124
+ * Get all registered routes
125
+ */
126
+ getRoutes() {
127
+ return Array.from(this.routes.values());
128
+ }
129
+ /**
130
+ * Remove a route
131
+ */
132
+ removeRoute(name) {
133
+ if (!this.routes.has(name))
134
+ return false;
135
+ this.routes.delete(name);
136
+ return this.inner.removeIntent(name);
137
+ }
138
+ /**
139
+ * Clear all routes
140
+ */
141
+ clear() {
142
+ this.routes.clear();
143
+ this.inner.clear();
144
+ }
145
+ }
146
+ exports.SemanticRouter = SemanticRouter;
147
+ /**
148
+ * Create a pre-configured agent router for hooks
149
+ */
150
+ function createAgentRouter() {
151
+ const router = new SemanticRouter({ threshold: 0.6 });
152
+ // Add common agent routes
153
+ router.addRoutes([
154
+ {
155
+ name: 'coder',
156
+ utterances: [
157
+ 'implement feature',
158
+ 'write code',
159
+ 'create function',
160
+ 'add method',
161
+ 'build component',
162
+ 'fix bug',
163
+ 'update implementation',
164
+ ],
165
+ metadata: { type: 'development' },
166
+ },
167
+ {
168
+ name: 'reviewer',
169
+ utterances: [
170
+ 'review code',
171
+ 'check quality',
172
+ 'find issues',
173
+ 'suggest improvements',
174
+ 'analyze code',
175
+ 'code review',
176
+ ],
177
+ metadata: { type: 'review' },
178
+ },
179
+ {
180
+ name: 'tester',
181
+ utterances: [
182
+ 'write tests',
183
+ 'add test cases',
184
+ 'create unit tests',
185
+ 'test coverage',
186
+ 'integration tests',
187
+ 'verify functionality',
188
+ ],
189
+ metadata: { type: 'testing' },
190
+ },
191
+ {
192
+ name: 'researcher',
193
+ utterances: [
194
+ 'research topic',
195
+ 'find information',
196
+ 'explore options',
197
+ 'investigate',
198
+ 'analyze requirements',
199
+ 'understand codebase',
200
+ ],
201
+ metadata: { type: 'research' },
202
+ },
203
+ {
204
+ name: 'architect',
205
+ utterances: [
206
+ 'design system',
207
+ 'architecture',
208
+ 'structure project',
209
+ 'plan implementation',
210
+ 'design patterns',
211
+ 'system design',
212
+ ],
213
+ metadata: { type: 'architecture' },
214
+ },
215
+ {
216
+ name: 'devops',
217
+ utterances: [
218
+ 'deploy',
219
+ 'ci/cd',
220
+ 'docker',
221
+ 'kubernetes',
222
+ 'infrastructure',
223
+ 'build pipeline',
224
+ 'github actions',
225
+ ],
226
+ metadata: { type: 'devops' },
227
+ },
228
+ {
229
+ name: 'security',
230
+ utterances: [
231
+ 'security audit',
232
+ 'vulnerability',
233
+ 'authentication',
234
+ 'authorization',
235
+ 'secure code',
236
+ 'penetration test',
237
+ ],
238
+ metadata: { type: 'security' },
239
+ },
240
+ ]);
241
+ return router;
242
+ }
243
+ exports.default = SemanticRouter;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * RVF Wrapper - Persistent vector store via @ruvector/rvf
3
+ *
4
+ * Wraps @ruvector/rvf RvfDatabase through thin convenience functions.
5
+ * Falls back to clear error messages when the package is not installed.
6
+ */
7
+ export declare function isRvfAvailable(): boolean;
8
+ export interface RvfStoreOptions {
9
+ dimensions: number;
10
+ metric?: 'l2' | 'cosine' | 'dotproduct';
11
+ compression?: 'none' | 'scalar' | 'product';
12
+ m?: number;
13
+ efConstruction?: number;
14
+ }
15
+ export interface RvfEntry {
16
+ id: string;
17
+ vector: Float32Array | number[];
18
+ metadata?: Record<string, any>;
19
+ }
20
+ export interface RvfResult {
21
+ id: string;
22
+ distance: number;
23
+ }
24
+ export interface RvfStoreStatus {
25
+ totalVectors: number;
26
+ totalSegments: number;
27
+ fileSizeBytes: number;
28
+ epoch: number;
29
+ compactionState: string;
30
+ deadSpaceRatio: number;
31
+ readOnly: boolean;
32
+ }
33
+ export interface RvfQueryOpts {
34
+ efSearch?: number;
35
+ filter?: any;
36
+ timeoutMs?: number;
37
+ }
38
+ export type RvfStore = any;
39
+ /**
40
+ * Create a new RVF store at the given path.
41
+ */
42
+ export declare function createRvfStore(path: string, options: RvfStoreOptions): Promise<RvfStore>;
43
+ /**
44
+ * Open an existing RVF store for read-write access.
45
+ */
46
+ export declare function openRvfStore(path: string): Promise<RvfStore>;
47
+ /**
48
+ * Ingest a batch of vectors into an open store.
49
+ */
50
+ export declare function rvfIngest(store: RvfStore, entries: RvfEntry[]): Promise<{
51
+ accepted: number;
52
+ rejected: number;
53
+ epoch: number;
54
+ }>;
55
+ /**
56
+ * Query for the k nearest neighbors.
57
+ */
58
+ export declare function rvfQuery(store: RvfStore, vector: Float32Array | number[], k: number, options?: RvfQueryOpts): Promise<RvfResult[]>;
59
+ /**
60
+ * Soft-delete vectors by their IDs.
61
+ */
62
+ export declare function rvfDelete(store: RvfStore, ids: string[]): Promise<{
63
+ deleted: number;
64
+ epoch: number;
65
+ }>;
66
+ /**
67
+ * Get the current store status.
68
+ */
69
+ export declare function rvfStatus(store: RvfStore): Promise<RvfStoreStatus>;
70
+ /**
71
+ * Run compaction to reclaim dead space.
72
+ */
73
+ export declare function rvfCompact(store: RvfStore): Promise<{
74
+ segmentsCompacted: number;
75
+ bytesReclaimed: number;
76
+ epoch: number;
77
+ }>;
78
+ /**
79
+ * Derive a child store from a parent for lineage tracking.
80
+ */
81
+ export declare function rvfDerive(store: RvfStore, childPath: string): Promise<RvfStore>;
82
+ /**
83
+ * Close the store, releasing the writer lock and flushing data.
84
+ */
85
+ export declare function rvfClose(store: RvfStore): Promise<void>;
86
+ //# sourceMappingURL=rvf-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rvf-wrapper.d.ts","sourceRoot":"","sources":["../../src/core/rvf-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAMD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC;AAM3B;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAGlE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,QAAQ,EAAE,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAEhE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,EAC/B,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,MAAM,EAAE,GACZ,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAE7C;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAExE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAE/E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * RVF Wrapper - Persistent vector store via @ruvector/rvf
4
+ *
5
+ * Wraps @ruvector/rvf RvfDatabase through thin convenience functions.
6
+ * Falls back to clear error messages when the package is not installed.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.isRvfAvailable = isRvfAvailable;
10
+ exports.createRvfStore = createRvfStore;
11
+ exports.openRvfStore = openRvfStore;
12
+ exports.rvfIngest = rvfIngest;
13
+ exports.rvfQuery = rvfQuery;
14
+ exports.rvfDelete = rvfDelete;
15
+ exports.rvfStatus = rvfStatus;
16
+ exports.rvfCompact = rvfCompact;
17
+ exports.rvfDerive = rvfDerive;
18
+ exports.rvfClose = rvfClose;
19
+ let rvfModule = null;
20
+ let loadError = null;
21
+ function getRvfModule() {
22
+ if (rvfModule)
23
+ return rvfModule;
24
+ if (loadError)
25
+ throw loadError;
26
+ try {
27
+ rvfModule = require('@ruvector/rvf');
28
+ return rvfModule;
29
+ }
30
+ catch (e) {
31
+ loadError = new Error('@ruvector/rvf is not installed. Run: npm install @ruvector/rvf');
32
+ throw loadError;
33
+ }
34
+ }
35
+ function isRvfAvailable() {
36
+ try {
37
+ getRvfModule();
38
+ return true;
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ // ---------------------------------------------------------------------------
45
+ // Wrapper functions
46
+ // ---------------------------------------------------------------------------
47
+ /**
48
+ * Create a new RVF store at the given path.
49
+ */
50
+ async function createRvfStore(path, options) {
51
+ const mod = getRvfModule();
52
+ return mod.RvfDatabase.create(path, options);
53
+ }
54
+ /**
55
+ * Open an existing RVF store for read-write access.
56
+ */
57
+ async function openRvfStore(path) {
58
+ const mod = getRvfModule();
59
+ return mod.RvfDatabase.open(path);
60
+ }
61
+ /**
62
+ * Ingest a batch of vectors into an open store.
63
+ */
64
+ async function rvfIngest(store, entries) {
65
+ return store.ingestBatch(entries);
66
+ }
67
+ /**
68
+ * Query for the k nearest neighbors.
69
+ */
70
+ async function rvfQuery(store, vector, k, options) {
71
+ return store.query(vector, k, options);
72
+ }
73
+ /**
74
+ * Soft-delete vectors by their IDs.
75
+ */
76
+ async function rvfDelete(store, ids) {
77
+ return store.delete(ids);
78
+ }
79
+ /**
80
+ * Get the current store status.
81
+ */
82
+ async function rvfStatus(store) {
83
+ return store.status();
84
+ }
85
+ /**
86
+ * Run compaction to reclaim dead space.
87
+ */
88
+ async function rvfCompact(store) {
89
+ return store.compact();
90
+ }
91
+ /**
92
+ * Derive a child store from a parent for lineage tracking.
93
+ */
94
+ async function rvfDerive(store, childPath) {
95
+ return store.derive(childPath);
96
+ }
97
+ /**
98
+ * Close the store, releasing the writer lock and flushing data.
99
+ */
100
+ async function rvfClose(store) {
101
+ return store.close();
102
+ }