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.
- package/.claude/skills/skills-manifest.json +1 -1
- package/README.md +29 -1
- package/package.json +2 -1
- package/scripts/rvf-baseline-benchmark.ts +843 -0
- package/v3/CHANGELOG.md +30 -0
- package/v3/dist/audit/witness-chain.d.ts +148 -0
- package/v3/dist/audit/witness-chain.d.ts.map +1 -0
- package/v3/dist/audit/witness-chain.js +269 -0
- package/v3/dist/audit/witness-chain.js.map +1 -0
- package/v3/dist/cli/brain-commands.d.ts +39 -0
- package/v3/dist/cli/brain-commands.d.ts.map +1 -0
- package/v3/dist/cli/brain-commands.js +60 -0
- package/v3/dist/cli/brain-commands.js.map +1 -0
- package/v3/dist/cli/bundle.js +4509 -2452
- package/v3/dist/cli/command-registry.d.ts.map +1 -1
- package/v3/dist/cli/command-registry.js +3 -1
- package/v3/dist/cli/command-registry.js.map +1 -1
- package/v3/dist/cli/handlers/brain-handler.d.ts +22 -0
- package/v3/dist/cli/handlers/brain-handler.d.ts.map +1 -0
- package/v3/dist/cli/handlers/brain-handler.js +148 -0
- package/v3/dist/cli/handlers/brain-handler.js.map +1 -0
- package/v3/dist/cli/handlers/index.d.ts +1 -0
- package/v3/dist/cli/handlers/index.d.ts.map +1 -1
- package/v3/dist/cli/handlers/index.js +1 -0
- package/v3/dist/cli/handlers/index.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts +31 -44
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.js +73 -178
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.js.map +1 -1
- package/v3/dist/domains/quality-assessment/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/coordinator.js +8 -0
- package/v3/dist/domains/quality-assessment/coordinator.js.map +1 -1
- package/v3/dist/domains/test-execution/coordinator.d.ts +14 -0
- package/v3/dist/domains/test-execution/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/coordinator.js +18 -0
- package/v3/dist/domains/test-execution/coordinator.js.map +1 -1
- package/v3/dist/domains/test-execution/services/index.d.ts +1 -0
- package/v3/dist/domains/test-execution/services/index.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/index.js +1 -0
- package/v3/dist/domains/test-execution/services/index.js.map +1 -1
- package/v3/dist/domains/test-execution/services/mincut-test-optimizer.d.ts +118 -0
- package/v3/dist/domains/test-execution/services/mincut-test-optimizer.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/mincut-test-optimizer.js +358 -0
- package/v3/dist/domains/test-execution/services/mincut-test-optimizer.js.map +1 -0
- package/v3/dist/integrations/ruvector/brain-exporter.d.ts +66 -0
- package/v3/dist/integrations/ruvector/brain-exporter.d.ts.map +1 -0
- package/v3/dist/integrations/ruvector/brain-exporter.js +537 -0
- package/v3/dist/integrations/ruvector/brain-exporter.js.map +1 -0
- package/v3/dist/integrations/ruvector/index.d.ts +4 -0
- package/v3/dist/integrations/ruvector/index.d.ts.map +1 -1
- package/v3/dist/integrations/ruvector/index.js +5 -0
- package/v3/dist/integrations/ruvector/index.js.map +1 -1
- package/v3/dist/integrations/ruvector/mincut-wrapper.d.ts +204 -0
- package/v3/dist/integrations/ruvector/mincut-wrapper.d.ts.map +1 -0
- package/v3/dist/integrations/ruvector/mincut-wrapper.js +310 -0
- package/v3/dist/integrations/ruvector/mincut-wrapper.js.map +1 -0
- package/v3/dist/integrations/ruvector/rvf-dual-writer.d.ts +141 -0
- package/v3/dist/integrations/ruvector/rvf-dual-writer.d.ts.map +1 -0
- package/v3/dist/integrations/ruvector/rvf-dual-writer.js +367 -0
- package/v3/dist/integrations/ruvector/rvf-dual-writer.js.map +1 -0
- package/v3/dist/integrations/ruvector/rvf-native-adapter.d.ts +60 -0
- package/v3/dist/integrations/ruvector/rvf-native-adapter.d.ts.map +1 -0
- package/v3/dist/integrations/ruvector/rvf-native-adapter.js +240 -0
- package/v3/dist/integrations/ruvector/rvf-native-adapter.js.map +1 -0
- package/v3/dist/kernel/hnsw-adapter.d.ts +99 -0
- package/v3/dist/kernel/hnsw-adapter.d.ts.map +1 -0
- package/v3/dist/kernel/hnsw-adapter.js +218 -0
- package/v3/dist/kernel/hnsw-adapter.js.map +1 -0
- package/v3/dist/kernel/hnsw-index-provider.d.ts +90 -0
- package/v3/dist/kernel/hnsw-index-provider.d.ts.map +1 -0
- package/v3/dist/kernel/hnsw-index-provider.js +23 -0
- package/v3/dist/kernel/hnsw-index-provider.js.map +1 -0
- package/v3/dist/kernel/progressive-hnsw-backend.d.ts +67 -0
- package/v3/dist/kernel/progressive-hnsw-backend.d.ts.map +1 -0
- package/v3/dist/kernel/progressive-hnsw-backend.js +266 -0
- package/v3/dist/kernel/progressive-hnsw-backend.js.map +1 -0
- package/v3/dist/kernel/unified-memory-hnsw.d.ts +71 -0
- package/v3/dist/kernel/unified-memory-hnsw.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory-hnsw.js +87 -0
- package/v3/dist/kernel/unified-memory-hnsw.js.map +1 -1
- package/v3/dist/kernel/unified-memory-schemas.d.ts +1 -0
- package/v3/dist/kernel/unified-memory-schemas.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory-schemas.js +16 -0
- package/v3/dist/kernel/unified-memory-schemas.js.map +1 -1
- package/v3/dist/learning/dream/dream-engine.d.ts +16 -0
- package/v3/dist/learning/dream/dream-engine.d.ts.map +1 -1
- package/v3/dist/learning/dream/dream-engine.js +70 -0
- package/v3/dist/learning/dream/dream-engine.js.map +1 -1
- package/v3/dist/learning/dream/index.d.ts +2 -0
- package/v3/dist/learning/dream/index.d.ts.map +1 -1
- package/v3/dist/learning/dream/index.js +8 -0
- package/v3/dist/learning/dream/index.js.map +1 -1
- package/v3/dist/learning/dream/rvcow-branch-manager.d.ts +170 -0
- package/v3/dist/learning/dream/rvcow-branch-manager.d.ts.map +1 -0
- package/v3/dist/learning/dream/rvcow-branch-manager.js +263 -0
- package/v3/dist/learning/dream/rvcow-branch-manager.js.map +1 -0
- package/v3/dist/learning/dream/speculative-dreamer.d.ts +129 -0
- package/v3/dist/learning/dream/speculative-dreamer.d.ts.map +1 -0
- package/v3/dist/learning/dream/speculative-dreamer.js +214 -0
- package/v3/dist/learning/dream/speculative-dreamer.js.map +1 -0
- package/v3/dist/learning/qe-reasoning-bank.d.ts +9 -0
- package/v3/dist/learning/qe-reasoning-bank.d.ts.map +1 -1
- package/v3/dist/learning/qe-reasoning-bank.js +50 -1
- package/v3/dist/learning/qe-reasoning-bank.js.map +1 -1
- package/v3/dist/mcp/bundle.js +8900 -7163
- package/v3/dist/mcp/services/mincut-routing-service.d.ts +148 -0
- package/v3/dist/mcp/services/mincut-routing-service.d.ts.map +1 -0
- package/v3/dist/mcp/services/mincut-routing-service.js +198 -0
- package/v3/dist/mcp/services/mincut-routing-service.js.map +1 -0
- package/v3/dist/mcp/services/task-router.d.ts +4 -0
- package/v3/dist/mcp/services/task-router.d.ts.map +1 -1
- package/v3/dist/mcp/services/task-router.js +57 -15
- package/v3/dist/mcp/services/task-router.js.map +1 -1
- package/v3/dist/monitoring/structural-health.d.ts +142 -0
- package/v3/dist/monitoring/structural-health.d.ts.map +1 -0
- package/v3/dist/monitoring/structural-health.js +201 -0
- package/v3/dist/monitoring/structural-health.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|