agentic-qe 3.6.19 → 3.7.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 (118) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/README.md +29 -1
  3. package/package.json +2 -1
  4. package/scripts/rvf-baseline-benchmark.ts +843 -0
  5. package/v3/CHANGELOG.md +30 -0
  6. package/v3/dist/audit/witness-chain.d.ts +148 -0
  7. package/v3/dist/audit/witness-chain.d.ts.map +1 -0
  8. package/v3/dist/audit/witness-chain.js +269 -0
  9. package/v3/dist/audit/witness-chain.js.map +1 -0
  10. package/v3/dist/cli/brain-commands.d.ts +39 -0
  11. package/v3/dist/cli/brain-commands.d.ts.map +1 -0
  12. package/v3/dist/cli/brain-commands.js +60 -0
  13. package/v3/dist/cli/brain-commands.js.map +1 -0
  14. package/v3/dist/cli/bundle.js +4509 -2452
  15. package/v3/dist/cli/command-registry.d.ts.map +1 -1
  16. package/v3/dist/cli/command-registry.js +3 -1
  17. package/v3/dist/cli/command-registry.js.map +1 -1
  18. package/v3/dist/cli/handlers/brain-handler.d.ts +22 -0
  19. package/v3/dist/cli/handlers/brain-handler.d.ts.map +1 -0
  20. package/v3/dist/cli/handlers/brain-handler.js +148 -0
  21. package/v3/dist/cli/handlers/brain-handler.js.map +1 -0
  22. package/v3/dist/cli/handlers/index.d.ts +1 -0
  23. package/v3/dist/cli/handlers/index.d.ts.map +1 -1
  24. package/v3/dist/cli/handlers/index.js +1 -0
  25. package/v3/dist/cli/handlers/index.js.map +1 -1
  26. package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts +31 -44
  27. package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts.map +1 -1
  28. package/v3/dist/domains/coverage-analysis/services/hnsw-index.js +73 -178
  29. package/v3/dist/domains/coverage-analysis/services/hnsw-index.js.map +1 -1
  30. package/v3/dist/domains/quality-assessment/coordinator.d.ts.map +1 -1
  31. package/v3/dist/domains/quality-assessment/coordinator.js +8 -0
  32. package/v3/dist/domains/quality-assessment/coordinator.js.map +1 -1
  33. package/v3/dist/domains/test-execution/coordinator.d.ts +14 -0
  34. package/v3/dist/domains/test-execution/coordinator.d.ts.map +1 -1
  35. package/v3/dist/domains/test-execution/coordinator.js +18 -0
  36. package/v3/dist/domains/test-execution/coordinator.js.map +1 -1
  37. package/v3/dist/domains/test-execution/services/index.d.ts +1 -0
  38. package/v3/dist/domains/test-execution/services/index.d.ts.map +1 -1
  39. package/v3/dist/domains/test-execution/services/index.js +1 -0
  40. package/v3/dist/domains/test-execution/services/index.js.map +1 -1
  41. package/v3/dist/domains/test-execution/services/mincut-test-optimizer.d.ts +118 -0
  42. package/v3/dist/domains/test-execution/services/mincut-test-optimizer.d.ts.map +1 -0
  43. package/v3/dist/domains/test-execution/services/mincut-test-optimizer.js +358 -0
  44. package/v3/dist/domains/test-execution/services/mincut-test-optimizer.js.map +1 -0
  45. package/v3/dist/integrations/ruvector/brain-exporter.d.ts +66 -0
  46. package/v3/dist/integrations/ruvector/brain-exporter.d.ts.map +1 -0
  47. package/v3/dist/integrations/ruvector/brain-exporter.js +537 -0
  48. package/v3/dist/integrations/ruvector/brain-exporter.js.map +1 -0
  49. package/v3/dist/integrations/ruvector/index.d.ts +4 -0
  50. package/v3/dist/integrations/ruvector/index.d.ts.map +1 -1
  51. package/v3/dist/integrations/ruvector/index.js +5 -0
  52. package/v3/dist/integrations/ruvector/index.js.map +1 -1
  53. package/v3/dist/integrations/ruvector/mincut-wrapper.d.ts +204 -0
  54. package/v3/dist/integrations/ruvector/mincut-wrapper.d.ts.map +1 -0
  55. package/v3/dist/integrations/ruvector/mincut-wrapper.js +310 -0
  56. package/v3/dist/integrations/ruvector/mincut-wrapper.js.map +1 -0
  57. package/v3/dist/integrations/ruvector/rvf-dual-writer.d.ts +141 -0
  58. package/v3/dist/integrations/ruvector/rvf-dual-writer.d.ts.map +1 -0
  59. package/v3/dist/integrations/ruvector/rvf-dual-writer.js +367 -0
  60. package/v3/dist/integrations/ruvector/rvf-dual-writer.js.map +1 -0
  61. package/v3/dist/integrations/ruvector/rvf-native-adapter.d.ts +60 -0
  62. package/v3/dist/integrations/ruvector/rvf-native-adapter.d.ts.map +1 -0
  63. package/v3/dist/integrations/ruvector/rvf-native-adapter.js +240 -0
  64. package/v3/dist/integrations/ruvector/rvf-native-adapter.js.map +1 -0
  65. package/v3/dist/kernel/hnsw-adapter.d.ts +99 -0
  66. package/v3/dist/kernel/hnsw-adapter.d.ts.map +1 -0
  67. package/v3/dist/kernel/hnsw-adapter.js +218 -0
  68. package/v3/dist/kernel/hnsw-adapter.js.map +1 -0
  69. package/v3/dist/kernel/hnsw-index-provider.d.ts +90 -0
  70. package/v3/dist/kernel/hnsw-index-provider.d.ts.map +1 -0
  71. package/v3/dist/kernel/hnsw-index-provider.js +23 -0
  72. package/v3/dist/kernel/hnsw-index-provider.js.map +1 -0
  73. package/v3/dist/kernel/progressive-hnsw-backend.d.ts +67 -0
  74. package/v3/dist/kernel/progressive-hnsw-backend.d.ts.map +1 -0
  75. package/v3/dist/kernel/progressive-hnsw-backend.js +266 -0
  76. package/v3/dist/kernel/progressive-hnsw-backend.js.map +1 -0
  77. package/v3/dist/kernel/unified-memory-hnsw.d.ts +71 -0
  78. package/v3/dist/kernel/unified-memory-hnsw.d.ts.map +1 -1
  79. package/v3/dist/kernel/unified-memory-hnsw.js +87 -0
  80. package/v3/dist/kernel/unified-memory-hnsw.js.map +1 -1
  81. package/v3/dist/kernel/unified-memory-schemas.d.ts +1 -0
  82. package/v3/dist/kernel/unified-memory-schemas.d.ts.map +1 -1
  83. package/v3/dist/kernel/unified-memory-schemas.js +16 -0
  84. package/v3/dist/kernel/unified-memory-schemas.js.map +1 -1
  85. package/v3/dist/learning/dream/dream-engine.d.ts +16 -0
  86. package/v3/dist/learning/dream/dream-engine.d.ts.map +1 -1
  87. package/v3/dist/learning/dream/dream-engine.js +70 -0
  88. package/v3/dist/learning/dream/dream-engine.js.map +1 -1
  89. package/v3/dist/learning/dream/index.d.ts +2 -0
  90. package/v3/dist/learning/dream/index.d.ts.map +1 -1
  91. package/v3/dist/learning/dream/index.js +8 -0
  92. package/v3/dist/learning/dream/index.js.map +1 -1
  93. package/v3/dist/learning/dream/rvcow-branch-manager.d.ts +170 -0
  94. package/v3/dist/learning/dream/rvcow-branch-manager.d.ts.map +1 -0
  95. package/v3/dist/learning/dream/rvcow-branch-manager.js +263 -0
  96. package/v3/dist/learning/dream/rvcow-branch-manager.js.map +1 -0
  97. package/v3/dist/learning/dream/speculative-dreamer.d.ts +129 -0
  98. package/v3/dist/learning/dream/speculative-dreamer.d.ts.map +1 -0
  99. package/v3/dist/learning/dream/speculative-dreamer.js +214 -0
  100. package/v3/dist/learning/dream/speculative-dreamer.js.map +1 -0
  101. package/v3/dist/learning/qe-reasoning-bank.d.ts +9 -0
  102. package/v3/dist/learning/qe-reasoning-bank.d.ts.map +1 -1
  103. package/v3/dist/learning/qe-reasoning-bank.js +50 -1
  104. package/v3/dist/learning/qe-reasoning-bank.js.map +1 -1
  105. package/v3/dist/mcp/bundle.js +8900 -7163
  106. package/v3/dist/mcp/services/mincut-routing-service.d.ts +148 -0
  107. package/v3/dist/mcp/services/mincut-routing-service.d.ts.map +1 -0
  108. package/v3/dist/mcp/services/mincut-routing-service.js +198 -0
  109. package/v3/dist/mcp/services/mincut-routing-service.js.map +1 -0
  110. package/v3/dist/mcp/services/task-router.d.ts +4 -0
  111. package/v3/dist/mcp/services/task-router.d.ts.map +1 -1
  112. package/v3/dist/mcp/services/task-router.js +57 -15
  113. package/v3/dist/mcp/services/task-router.js.map +1 -1
  114. package/v3/dist/monitoring/structural-health.d.ts +142 -0
  115. package/v3/dist/monitoring/structural-health.d.ts.map +1 -0
  116. package/v3/dist/monitoring/structural-health.js +201 -0
  117. package/v3/dist/monitoring/structural-health.js.map +1 -0
  118. package/v3/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rvf-native-adapter.js","sourceRoot":"","sources":["../../../src/integrations/ruvector/rvf-native-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * HNSW Adapter
3
+ *
4
+ * Wraps ProgressiveHnswBackend and provides backward-compatible APIs for
5
+ * existing callers that use InMemoryHNSWIndex or RuvectorFlatIndex interfaces.
6
+ *
7
+ * Named indexes: patterns, qe-memory, learning, coverage
8
+ *
9
+ * @see ADR-071: HNSW Implementation Unification
10
+ * @module kernel/hnsw-adapter
11
+ */
12
+ import type { IHnswIndexProvider, SearchResult, HnswConfig } from './hnsw-index-provider.js';
13
+ /**
14
+ * Well-known index names used across the AQE platform.
15
+ */
16
+ export type HnswIndexName = 'patterns' | 'qe-memory' | 'learning' | 'coverage';
17
+ /**
18
+ * Adapter that wraps ProgressiveHnswBackend and provides backward-compatible
19
+ * APIs matching the old InMemoryHNSWIndex and RuvectorFlatIndex interfaces.
20
+ *
21
+ * This adapter bridges the gap between the new IHnswIndexProvider interface
22
+ * and existing callers that use string-based IDs and number[] vectors.
23
+ */
24
+ export declare class HnswAdapter implements IHnswIndexProvider {
25
+ private readonly backend;
26
+ private readonly indexName;
27
+ /** Maps string keys to numeric IDs (for backward compat with old APIs) */
28
+ private stringToNumericId;
29
+ private numericToStringId;
30
+ private nextAutoId;
31
+ constructor(name: string, config?: Partial<HnswConfig>);
32
+ add(id: number, vector: Float32Array, metadata?: Record<string, unknown>): void;
33
+ search(query: Float32Array, k: number): SearchResult[];
34
+ remove(id: number): boolean;
35
+ size(): number;
36
+ dimensions(): number;
37
+ recall(): number;
38
+ /**
39
+ * Add a vector using a string ID (backward compat with InMemoryHNSWIndex).
40
+ *
41
+ * @param id - String identifier
42
+ * @param embedding - Vector as number[]
43
+ */
44
+ addByStringId(id: string, embedding: number[]): void;
45
+ /**
46
+ * Search using a number[] query (backward compat with InMemoryHNSWIndex).
47
+ *
48
+ * @param query - Query vector as number[]
49
+ * @param k - Number of results
50
+ * @returns Results with string IDs and scores
51
+ */
52
+ searchByArray(query: number[], k: number): Array<{
53
+ id: string;
54
+ score: number;
55
+ }>;
56
+ /**
57
+ * Remove by string ID (backward compat with InMemoryHNSWIndex).
58
+ */
59
+ removeByStringId(id: string): boolean;
60
+ /**
61
+ * Clear all vectors from the index.
62
+ */
63
+ clear(): void;
64
+ /**
65
+ * Check whether @ruvector/gnn is available.
66
+ */
67
+ isRuvectorAvailable(): boolean;
68
+ /**
69
+ * Get the index name.
70
+ */
71
+ getName(): string;
72
+ /**
73
+ * Create or retrieve a named HNSW index.
74
+ *
75
+ * Uses a singleton registry so the same name always returns the same instance.
76
+ *
77
+ * @param name - Index name (e.g. 'patterns', 'qe-memory', 'learning', 'coverage')
78
+ * @param config - Optional configuration overrides
79
+ * @returns IHnswIndexProvider instance
80
+ */
81
+ static create(name: string, config?: Partial<HnswConfig>): HnswAdapter;
82
+ /**
83
+ * Get an existing named index, or undefined if not created.
84
+ */
85
+ static get(name: string): HnswAdapter | undefined;
86
+ /**
87
+ * Close and remove a named index from the registry.
88
+ */
89
+ static close(name: string): void;
90
+ /**
91
+ * Close all named indexes.
92
+ */
93
+ static closeAll(): void;
94
+ /**
95
+ * List all registered index names.
96
+ */
97
+ static listIndexes(): string[];
98
+ }
99
+ //# sourceMappingURL=hnsw-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw-adapter.d.ts","sourceRoot":"","sources":["../../src/kernel/hnsw-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACX,MAAM,0BAA0B,CAAC;AAQlC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AA8C/E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,UAAU,CAAK;gBAEX,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;IAUtD,GAAG,CACD,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI;IAIP,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAItD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B,IAAI,IAAI,MAAM;IAId,UAAU,IAAI,MAAM;IAIpB,MAAM,IAAI,MAAM;IAQhB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAapD;;;;;;OAMG;IACH,aAAa,CACX,KAAK,EAAE,MAAM,EAAE,EACf,CAAC,EAAE,MAAM,GACR,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAQvC;;OAEG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAWrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,OAAO,IAAI,MAAM;IAQjB;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,WAAW;IAWtE;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKjD;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQhC;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI,IAAI;IAOvB;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;CAG/B"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * HNSW Adapter
3
+ *
4
+ * Wraps ProgressiveHnswBackend and provides backward-compatible APIs for
5
+ * existing callers that use InMemoryHNSWIndex or RuvectorFlatIndex interfaces.
6
+ *
7
+ * Named indexes: patterns, qe-memory, learning, coverage
8
+ *
9
+ * @see ADR-071: HNSW Implementation Unification
10
+ * @module kernel/hnsw-adapter
11
+ */
12
+ import { ProgressiveHnswBackend } from './progressive-hnsw-backend.js';
13
+ /**
14
+ * Default configurations for each named index.
15
+ */
16
+ const INDEX_DEFAULTS = {
17
+ 'patterns': {
18
+ dimensions: 384,
19
+ M: 16,
20
+ efConstruction: 200,
21
+ efSearch: 100,
22
+ metric: 'cosine',
23
+ },
24
+ 'qe-memory': {
25
+ dimensions: 384,
26
+ M: 16,
27
+ efConstruction: 200,
28
+ efSearch: 100,
29
+ metric: 'cosine',
30
+ },
31
+ 'learning': {
32
+ dimensions: 384,
33
+ M: 16,
34
+ efConstruction: 200,
35
+ efSearch: 50,
36
+ metric: 'cosine',
37
+ },
38
+ 'coverage': {
39
+ dimensions: 768,
40
+ M: 16,
41
+ efConstruction: 200,
42
+ efSearch: 100,
43
+ metric: 'cosine',
44
+ },
45
+ };
46
+ // ============================================================================
47
+ // Singleton Registry
48
+ // ============================================================================
49
+ const registry = new Map();
50
+ // ============================================================================
51
+ // HnswAdapter
52
+ // ============================================================================
53
+ /**
54
+ * Adapter that wraps ProgressiveHnswBackend and provides backward-compatible
55
+ * APIs matching the old InMemoryHNSWIndex and RuvectorFlatIndex interfaces.
56
+ *
57
+ * This adapter bridges the gap between the new IHnswIndexProvider interface
58
+ * and existing callers that use string-based IDs and number[] vectors.
59
+ */
60
+ export class HnswAdapter {
61
+ backend;
62
+ indexName;
63
+ /** Maps string keys to numeric IDs (for backward compat with old APIs) */
64
+ stringToNumericId = new Map();
65
+ numericToStringId = new Map();
66
+ nextAutoId = 0;
67
+ constructor(name, config) {
68
+ this.indexName = name;
69
+ const defaults = INDEX_DEFAULTS[name] ?? {};
70
+ this.backend = new ProgressiveHnswBackend({ ...defaults, ...config });
71
+ }
72
+ // ============================================================================
73
+ // IHnswIndexProvider implementation
74
+ // ============================================================================
75
+ add(id, vector, metadata) {
76
+ this.backend.add(id, vector, metadata);
77
+ }
78
+ search(query, k) {
79
+ return this.backend.search(query, k);
80
+ }
81
+ remove(id) {
82
+ return this.backend.remove(id);
83
+ }
84
+ size() {
85
+ return this.backend.size();
86
+ }
87
+ dimensions() {
88
+ return this.backend.dimensions();
89
+ }
90
+ recall() {
91
+ return this.backend.recall();
92
+ }
93
+ // ============================================================================
94
+ // Backward-compatible APIs (InMemoryHNSWIndex style: string IDs, number[])
95
+ // ============================================================================
96
+ /**
97
+ * Add a vector using a string ID (backward compat with InMemoryHNSWIndex).
98
+ *
99
+ * @param id - String identifier
100
+ * @param embedding - Vector as number[]
101
+ */
102
+ addByStringId(id, embedding) {
103
+ let numericId = this.stringToNumericId.get(id);
104
+ if (numericId !== undefined) {
105
+ // Update existing
106
+ this.backend.remove(numericId);
107
+ }
108
+ else {
109
+ numericId = this.nextAutoId++;
110
+ this.stringToNumericId.set(id, numericId);
111
+ this.numericToStringId.set(numericId, id);
112
+ }
113
+ this.backend.add(numericId, new Float32Array(embedding));
114
+ }
115
+ /**
116
+ * Search using a number[] query (backward compat with InMemoryHNSWIndex).
117
+ *
118
+ * @param query - Query vector as number[]
119
+ * @param k - Number of results
120
+ * @returns Results with string IDs and scores
121
+ */
122
+ searchByArray(query, k) {
123
+ const results = this.backend.search(new Float32Array(query), k);
124
+ return results.map((r) => ({
125
+ id: this.numericToStringId.get(r.id) ?? String(r.id),
126
+ score: r.score,
127
+ }));
128
+ }
129
+ /**
130
+ * Remove by string ID (backward compat with InMemoryHNSWIndex).
131
+ */
132
+ removeByStringId(id) {
133
+ const numericId = this.stringToNumericId.get(id);
134
+ if (numericId === undefined)
135
+ return false;
136
+ const removed = this.backend.remove(numericId);
137
+ if (removed) {
138
+ this.stringToNumericId.delete(id);
139
+ this.numericToStringId.delete(numericId);
140
+ }
141
+ return removed;
142
+ }
143
+ /**
144
+ * Clear all vectors from the index.
145
+ */
146
+ clear() {
147
+ this.backend.clear();
148
+ this.stringToNumericId.clear();
149
+ this.numericToStringId.clear();
150
+ this.nextAutoId = 0;
151
+ }
152
+ /**
153
+ * Check whether @ruvector/gnn is available.
154
+ */
155
+ isRuvectorAvailable() {
156
+ return this.backend.isRuvectorAvailable();
157
+ }
158
+ /**
159
+ * Get the index name.
160
+ */
161
+ getName() {
162
+ return this.indexName;
163
+ }
164
+ // ============================================================================
165
+ // Factory
166
+ // ============================================================================
167
+ /**
168
+ * Create or retrieve a named HNSW index.
169
+ *
170
+ * Uses a singleton registry so the same name always returns the same instance.
171
+ *
172
+ * @param name - Index name (e.g. 'patterns', 'qe-memory', 'learning', 'coverage')
173
+ * @param config - Optional configuration overrides
174
+ * @returns IHnswIndexProvider instance
175
+ */
176
+ static create(name, config) {
177
+ const existing = registry.get(name);
178
+ if (existing instanceof HnswAdapter) {
179
+ return existing;
180
+ }
181
+ const adapter = new HnswAdapter(name, config);
182
+ registry.set(name, adapter);
183
+ return adapter;
184
+ }
185
+ /**
186
+ * Get an existing named index, or undefined if not created.
187
+ */
188
+ static get(name) {
189
+ const existing = registry.get(name);
190
+ return existing instanceof HnswAdapter ? existing : undefined;
191
+ }
192
+ /**
193
+ * Close and remove a named index from the registry.
194
+ */
195
+ static close(name) {
196
+ const existing = registry.get(name);
197
+ if (existing instanceof HnswAdapter) {
198
+ existing.clear();
199
+ }
200
+ registry.delete(name);
201
+ }
202
+ /**
203
+ * Close all named indexes.
204
+ */
205
+ static closeAll() {
206
+ for (const [name] of registry) {
207
+ HnswAdapter.close(name);
208
+ }
209
+ registry.clear();
210
+ }
211
+ /**
212
+ * List all registered index names.
213
+ */
214
+ static listIndexes() {
215
+ return Array.from(registry.keys());
216
+ }
217
+ }
218
+ //# sourceMappingURL=hnsw-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw-adapter.js","sourceRoot":"","sources":["../../src/kernel/hnsw-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAWvE;;GAEG;AACH,MAAM,cAAc,GAA+C;IACjE,UAAU,EAAE;QACV,UAAU,EAAE,GAAG;QACf,CAAC,EAAE,EAAE;QACL,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,QAAQ;KACjB;IACD,WAAW,EAAE;QACX,UAAU,EAAE,GAAG;QACf,CAAC,EAAE,EAAE;QACL,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,QAAQ;KACjB;IACD,UAAU,EAAE;QACV,UAAU,EAAE,GAAG;QACf,CAAC,EAAE,EAAE;QACL,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,QAAQ;KACjB;IACD,UAAU,EAAE;QACV,UAAU,EAAE,GAAG;QACf,CAAC,EAAE,EAAE;QACL,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,QAAQ;KACjB;CACF,CAAC;AAEF,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;AAE5D,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACL,OAAO,CAAyB;IAChC,SAAS,CAAS;IAEnC,0EAA0E;IAClE,iBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACnD,iBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACnD,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,IAAY,EAAE,MAA4B;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAqB,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,+EAA+E;IAC/E,oCAAoC;IACpC,+EAA+E;IAE/E,GAAG,CACD,EAAU,EACV,MAAoB,EACpB,QAAkC;QAElC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAmB,EAAE,CAAS;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,+EAA+E;IAC/E,2EAA2E;IAC3E,+EAA+E;IAE/E;;;;;OAKG;IACH,aAAa,CAAC,EAAU,EAAE,SAAmB;QAC3C,IAAI,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,kBAAkB;YAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CACX,KAAe,EACf,CAAS;QAET,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,EAAU;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+EAA+E;IAC/E,UAAU;IACV,+EAA+E;IAE/E;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,IAAY,EAAE,MAA4B;QACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,QAAQ,YAAY,WAAW,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,QAAQ,YAAY,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAY;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,QAAQ,YAAY,WAAW,EAAE,CAAC;YACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QACb,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Unified HNSW Index Provider Interface
3
+ *
4
+ * Single interface for ALL vector search operations in AQE v3.
5
+ * Replaces the three fragmented implementations:
6
+ * 1. InMemoryHNSWIndex (TypeScript HNSW)
7
+ * 2. RuvectorFlatIndex (@ruvector/gnn flat search)
8
+ * 3. QEGNNEmbeddingIndex (coverage domain)
9
+ *
10
+ * @see ADR-071: HNSW Implementation Unification
11
+ * @module kernel/hnsw-index-provider
12
+ */
13
+ /**
14
+ * Result from a vector similarity search.
15
+ */
16
+ export interface SearchResult {
17
+ /** Numeric identifier for the matched vector */
18
+ id: number;
19
+ /** Similarity score (higher = more similar, range depends on metric) */
20
+ score: number;
21
+ /** Optional metadata associated with this vector */
22
+ metadata?: Record<string, unknown>;
23
+ }
24
+ /**
25
+ * Configuration for an HNSW index instance.
26
+ */
27
+ export interface HnswConfig {
28
+ /** Number of vector dimensions (e.g. 384, 768) */
29
+ dimensions: number;
30
+ /** Max connections per node in the HNSW graph (default: 16) */
31
+ M: number;
32
+ /** Build-time candidate list size (default: 200) */
33
+ efConstruction: number;
34
+ /** Query-time candidate list size (default: 100) */
35
+ efSearch: number;
36
+ /** Distance metric */
37
+ metric: 'cosine' | 'euclidean';
38
+ }
39
+ /**
40
+ * Default HNSW configuration matching existing AQE defaults.
41
+ */
42
+ export declare const DEFAULT_HNSW_CONFIG: HnswConfig;
43
+ /**
44
+ * Unified HNSW index provider interface.
45
+ *
46
+ * This is the single interface ALL callers must use for vector search.
47
+ * Backed by ProgressiveHnswBackend which uses @ruvector/gnn's
48
+ * differentiableSearch as the primary engine with brute-force fallback.
49
+ */
50
+ export interface IHnswIndexProvider {
51
+ /**
52
+ * Add a vector to the index.
53
+ *
54
+ * @param id - Numeric identifier for the vector
55
+ * @param vector - The vector data (must match configured dimensions, or will be auto-resized)
56
+ * @param metadata - Optional metadata to associate with this vector
57
+ */
58
+ add(id: number, vector: Float32Array, metadata?: Record<string, unknown>): void;
59
+ /**
60
+ * Search for the k nearest neighbors of the query vector.
61
+ *
62
+ * @param query - Query vector (must match configured dimensions, or will be auto-resized)
63
+ * @param k - Number of neighbors to return
64
+ * @returns Array of SearchResult sorted by descending score
65
+ */
66
+ search(query: Float32Array, k: number): SearchResult[];
67
+ /**
68
+ * Remove a vector from the index.
69
+ *
70
+ * @param id - The numeric identifier to remove
71
+ * @returns true if the vector was found and removed, false otherwise
72
+ */
73
+ remove(id: number): boolean;
74
+ /**
75
+ * Get the number of vectors currently in the index.
76
+ */
77
+ size(): number;
78
+ /**
79
+ * Get the configured vector dimensions.
80
+ */
81
+ dimensions(): number;
82
+ /**
83
+ * Get the estimated recall of the index (0-1).
84
+ *
85
+ * For brute-force search this returns 1.0 (exact results).
86
+ * For approximate HNSW this returns an estimate based on configuration.
87
+ */
88
+ recall(): number;
89
+ }
90
+ //# sourceMappingURL=hnsw-index-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw-index-provider.d.ts","sourceRoot":"","sources":["../../src/kernel/hnsw-index-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,CAAC,EAAE,MAAM,CAAC;IACV,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,MAAM,EAAE,QAAQ,GAAG,WAAW,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAMjC,CAAC;AAMF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhF;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAEvD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5B;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,IAAI,MAAM,CAAC;IAErB;;;;;OAKG;IACH,MAAM,IAAI,MAAM,CAAC;CAClB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Unified HNSW Index Provider Interface
3
+ *
4
+ * Single interface for ALL vector search operations in AQE v3.
5
+ * Replaces the three fragmented implementations:
6
+ * 1. InMemoryHNSWIndex (TypeScript HNSW)
7
+ * 2. RuvectorFlatIndex (@ruvector/gnn flat search)
8
+ * 3. QEGNNEmbeddingIndex (coverage domain)
9
+ *
10
+ * @see ADR-071: HNSW Implementation Unification
11
+ * @module kernel/hnsw-index-provider
12
+ */
13
+ /**
14
+ * Default HNSW configuration matching existing AQE defaults.
15
+ */
16
+ export const DEFAULT_HNSW_CONFIG = {
17
+ dimensions: 384,
18
+ M: 16,
19
+ efConstruction: 200,
20
+ efSearch: 100,
21
+ metric: 'cosine',
22
+ };
23
+ //# sourceMappingURL=hnsw-index-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hnsw-index-provider.js","sourceRoot":"","sources":["../../src/kernel/hnsw-index-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsCH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,UAAU,EAAE,GAAG;IACf,CAAC,EAAE,EAAE;IACL,cAAc,EAAE,GAAG;IACnB,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE,QAAQ;CACjB,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Progressive HNSW Backend
3
+ *
4
+ * Unified HNSW backend implementing IHnswIndexProvider. Uses @ruvector/gnn's
5
+ * differentiableSearch as the primary search engine with brute-force cosine
6
+ * similarity fallback when @ruvector/gnn is unavailable.
7
+ *
8
+ * Progressive loading:
9
+ * - Construction: instant (no vectors loaded)
10
+ * - First add: vectors stored in flat arrays
11
+ * - Search: uses @ruvector/gnn differentiableSearch for ranking, then
12
+ * computes exact cosine similarity for scores
13
+ *
14
+ * Handles dimension mismatch by auto-resizing vectors (384<->768).
15
+ *
16
+ * @see ADR-071: HNSW Implementation Unification
17
+ * @module kernel/progressive-hnsw-backend
18
+ */
19
+ import type { IHnswIndexProvider, SearchResult, HnswConfig } from './hnsw-index-provider.js';
20
+ /**
21
+ * Progressive HNSW backend using @ruvector/gnn differentiableSearch.
22
+ *
23
+ * Provides a unified vector search implementation that:
24
+ * - Uses @ruvector/gnn for fast native search when available
25
+ * - Falls back to brute-force cosine similarity when unavailable
26
+ * - Auto-resizes dimension mismatches (384 <-> 768)
27
+ * - Returns 1.0 recall for brute-force, estimated recall for HNSW
28
+ */
29
+ export declare class ProgressiveHnswBackend implements IHnswIndexProvider {
30
+ private readonly config;
31
+ private entries;
32
+ private idToIndex;
33
+ private hasRuvector;
34
+ private loaded;
35
+ constructor(config?: Partial<HnswConfig>);
36
+ /**
37
+ * Lazily load the @ruvector/gnn backend on first operation.
38
+ */
39
+ private ensureLoaded;
40
+ /**
41
+ * Normalize a vector to the configured dimensions, resizing if needed.
42
+ */
43
+ private normalizeVector;
44
+ add(id: number, vector: Float32Array, metadata?: Record<string, unknown>): void;
45
+ search(query: Float32Array, k: number): SearchResult[];
46
+ /**
47
+ * Brute-force cosine similarity search as fallback.
48
+ */
49
+ private bruteForcSearch;
50
+ remove(id: number): boolean;
51
+ size(): number;
52
+ dimensions(): number;
53
+ recall(): number;
54
+ /**
55
+ * Check whether @ruvector/gnn is available as the search backend.
56
+ */
57
+ isRuvectorAvailable(): boolean;
58
+ /**
59
+ * Get the current configuration.
60
+ */
61
+ getConfig(): Readonly<HnswConfig>;
62
+ /**
63
+ * Clear all vectors from the index.
64
+ */
65
+ clear(): void;
66
+ }
67
+ //# sourceMappingURL=progressive-hnsw-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressive-hnsw-backend.d.ts","sourceRoot":"","sources":["../../src/kernel/progressive-hnsw-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACX,MAAM,0BAA0B,CAAC;AAwHlC;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;IAIxC;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB,GAAG,CACD,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI;IAkBP,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAqDtD;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAiB3B,IAAI,IAAI,MAAM;IAId,UAAU,IAAI,MAAM;IAIpB,MAAM,IAAI,MAAM;IAQhB;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAK9B;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}