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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/cli/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,eAAe,EACf,UAAU,
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/cli/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,eAAe,EACf,UAAU,EASX,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,iBAAiB,CAAyB;gBAGhD,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChD,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC;IAO3C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIxC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,QAAQ,IAAI,MAAM,EAAE;IAIpB;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;IAI3B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOnC;;OAEG;IACH,uBAAuB,IAAI,IAAI;IAsB/B;;OAEG;IACH,UAAU,IAAI,MAAM;CAUrB;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChD,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACxC,eAAe,CAIjB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Central registry for all CLI command handlers.
|
|
5
5
|
* Provides command routing and management.
|
|
6
6
|
*/
|
|
7
|
-
import { createInitHandler, createStatusHandler, createHealthHandler, createTaskHandler, createAgentHandler, createDomainHandler, createProtocolHandler, } from './handlers/index.js';
|
|
7
|
+
import { createInitHandler, createStatusHandler, createHealthHandler, createTaskHandler, createAgentHandler, createDomainHandler, createProtocolHandler, createBrainHandler, } from './handlers/index.js';
|
|
8
8
|
// ============================================================================
|
|
9
9
|
// Command Registry
|
|
10
10
|
// ============================================================================
|
|
@@ -76,6 +76,8 @@ export class CommandRegistry {
|
|
|
76
76
|
this.register(createDomainHandler(this.cleanupAndExit, this.ensureInitialized));
|
|
77
77
|
// Protocol execution
|
|
78
78
|
this.register(createProtocolHandler(this.cleanupAndExit, this.ensureInitialized));
|
|
79
|
+
// Brain export/import
|
|
80
|
+
this.register(createBrainHandler(this.cleanupAndExit, this.ensureInitialized));
|
|
79
81
|
}
|
|
80
82
|
/**
|
|
81
83
|
* Get help for all commands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/cli/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAGL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/cli/command-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Brain Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles the 'aqe brain' command with subcommands: export, import, info.
|
|
5
|
+
* Thin CLI wiring around the brain-commands module.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { ICommandHandler, CLIContext } from './interfaces.js';
|
|
9
|
+
export declare class BrainHandler implements ICommandHandler {
|
|
10
|
+
readonly name = "brain";
|
|
11
|
+
readonly description = "Export, import, and inspect QE brain state";
|
|
12
|
+
private cleanupAndExit;
|
|
13
|
+
private ensureInitialized;
|
|
14
|
+
constructor(cleanupAndExit: (code: number) => Promise<never>, ensureInitialized: () => Promise<boolean>);
|
|
15
|
+
register(program: Command, _context: CLIContext): void;
|
|
16
|
+
private executeExport;
|
|
17
|
+
private executeImport;
|
|
18
|
+
private executeInfo;
|
|
19
|
+
getHelp(): string;
|
|
20
|
+
}
|
|
21
|
+
export declare function createBrainHandler(cleanupAndExit: (code: number) => Promise<never>, ensureInitialized: () => Promise<boolean>): BrainHandler;
|
|
22
|
+
//# sourceMappingURL=brain-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-handler.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/brain-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAW9D,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,gDAAgD;IAEpE,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,iBAAiB,CAAyB;gBAGhD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChD,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC;IAM3C,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;YAmCxC,aAAa;YAsBb,aAAa;YA0Bb,WAAW;IAqBzB,OAAO,IAAI,MAAM;CAqBlB;AAmCD,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChD,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACxC,YAAY,CAEd"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Brain Command Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles the 'aqe brain' command with subcommands: export, import, info.
|
|
5
|
+
* Thin CLI wiring around the brain-commands module.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { exportBrain, importBrain, brainInfo, } from '../brain-commands.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Brain Handler
|
|
12
|
+
// ============================================================================
|
|
13
|
+
export class BrainHandler {
|
|
14
|
+
name = 'brain';
|
|
15
|
+
description = 'Export, import, and inspect QE brain state';
|
|
16
|
+
cleanupAndExit;
|
|
17
|
+
ensureInitialized;
|
|
18
|
+
constructor(cleanupAndExit, ensureInitialized) {
|
|
19
|
+
this.cleanupAndExit = cleanupAndExit;
|
|
20
|
+
this.ensureInitialized = ensureInitialized;
|
|
21
|
+
}
|
|
22
|
+
register(program, _context) {
|
|
23
|
+
const brain = program
|
|
24
|
+
.command('brain')
|
|
25
|
+
.description(this.description);
|
|
26
|
+
brain
|
|
27
|
+
.command('export')
|
|
28
|
+
.description('Export brain state to a portable directory')
|
|
29
|
+
.requiredOption('-o, --output <path>', 'Output directory path')
|
|
30
|
+
.option('--format <format>', 'Export format', 'jsonl')
|
|
31
|
+
.option('--db <path>', 'Source database path', defaultDbPath())
|
|
32
|
+
.action(async (options) => {
|
|
33
|
+
await this.executeExport(options);
|
|
34
|
+
});
|
|
35
|
+
brain
|
|
36
|
+
.command('import')
|
|
37
|
+
.description('Import brain state from an export directory')
|
|
38
|
+
.requiredOption('-i, --input <path>', 'Path to brain export directory')
|
|
39
|
+
.option('--strategy <strategy>', 'Merge strategy', 'skip-conflicts')
|
|
40
|
+
.option('--dry-run', 'Preview import without writing', false)
|
|
41
|
+
.option('--db <path>', 'Target database path', defaultDbPath())
|
|
42
|
+
.action(async (options) => {
|
|
43
|
+
await this.executeImport(options);
|
|
44
|
+
});
|
|
45
|
+
brain
|
|
46
|
+
.command('info')
|
|
47
|
+
.description('Show manifest info for a brain export')
|
|
48
|
+
.requiredOption('-i, --input <path>', 'Path to brain export directory')
|
|
49
|
+
.action(async (options) => {
|
|
50
|
+
await this.executeInfo(options);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async executeExport(options) {
|
|
54
|
+
try {
|
|
55
|
+
console.log(chalk.blue('\n Exporting brain state...\n'));
|
|
56
|
+
const manifest = await exportBrain(options.db, {
|
|
57
|
+
outputPath: path.resolve(options.output),
|
|
58
|
+
});
|
|
59
|
+
console.log(chalk.green(' Export complete.'));
|
|
60
|
+
console.log(` Patterns: ${chalk.cyan(manifest.stats.patternCount)}`);
|
|
61
|
+
console.log(` Vectors: ${chalk.cyan(manifest.stats.vectorCount)}`);
|
|
62
|
+
console.log(` Checksum: ${chalk.gray(manifest.checksum)}`);
|
|
63
|
+
console.log(` Output: ${chalk.cyan(path.resolve(options.output))}`);
|
|
64
|
+
console.log('');
|
|
65
|
+
await this.cleanupAndExit(0);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(chalk.red('\n Brain export failed:'), error);
|
|
69
|
+
await this.cleanupAndExit(1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async executeImport(options) {
|
|
73
|
+
try {
|
|
74
|
+
if (options.dryRun) {
|
|
75
|
+
console.log(chalk.yellow('\n Dry-run mode — no data will be written.\n'));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.log(chalk.blue('\n Importing brain state...\n'));
|
|
79
|
+
}
|
|
80
|
+
const result = await importBrain(options.db, path.resolve(options.input), {
|
|
81
|
+
mergeStrategy: options.strategy,
|
|
82
|
+
dryRun: options.dryRun,
|
|
83
|
+
});
|
|
84
|
+
console.log(chalk.green(' Import complete.'));
|
|
85
|
+
console.log(` Imported: ${chalk.cyan(result.imported)}`);
|
|
86
|
+
console.log(` Skipped: ${chalk.yellow(result.skipped)}`);
|
|
87
|
+
console.log(` Conflicts: ${chalk.red(result.conflicts)}`);
|
|
88
|
+
console.log('');
|
|
89
|
+
await this.cleanupAndExit(0);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error(chalk.red('\n Brain import failed:'), error);
|
|
93
|
+
await this.cleanupAndExit(1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async executeInfo(options) {
|
|
97
|
+
try {
|
|
98
|
+
console.log(chalk.blue('\n Brain Export Info\n'));
|
|
99
|
+
const manifest = await brainInfo(path.resolve(options.input));
|
|
100
|
+
console.log(` Version: ${chalk.cyan(manifest.version)}`);
|
|
101
|
+
console.log(` Exported: ${chalk.cyan(manifest.exportedAt)}`);
|
|
102
|
+
console.log(` Source DB: ${chalk.cyan(manifest.sourceDb)}`);
|
|
103
|
+
console.log(` Patterns: ${chalk.cyan(manifest.stats.patternCount)}`);
|
|
104
|
+
console.log(` Vectors: ${chalk.cyan(manifest.stats.vectorCount)}`);
|
|
105
|
+
console.log(` Checksum: ${chalk.gray(manifest.checksum)}`);
|
|
106
|
+
console.log('');
|
|
107
|
+
await this.cleanupAndExit(0);
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
console.error(chalk.red('\n Failed to read brain info:'), error);
|
|
111
|
+
await this.cleanupAndExit(1);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
getHelp() {
|
|
115
|
+
return `
|
|
116
|
+
Export, import, and inspect QE brain state.
|
|
117
|
+
|
|
118
|
+
Usage:
|
|
119
|
+
aqe brain export --output <path> [--format jsonl] [--db <path>]
|
|
120
|
+
aqe brain import --input <path> [--strategy skip-conflicts] [--dry-run] [--db <path>]
|
|
121
|
+
aqe brain info --input <path>
|
|
122
|
+
|
|
123
|
+
Subcommands:
|
|
124
|
+
export Export brain patterns and vectors to a portable directory
|
|
125
|
+
import Import a brain export into the local database
|
|
126
|
+
info Show manifest metadata for an existing brain export
|
|
127
|
+
|
|
128
|
+
Examples:
|
|
129
|
+
aqe brain export -o ./my-brain-export
|
|
130
|
+
aqe brain import -i ./my-brain-export --strategy latest-wins
|
|
131
|
+
aqe brain import -i ./my-brain-export --dry-run
|
|
132
|
+
aqe brain info -i ./my-brain-export
|
|
133
|
+
`;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Helpers
|
|
138
|
+
// ============================================================================
|
|
139
|
+
function defaultDbPath() {
|
|
140
|
+
return path.join(process.cwd(), '.agentic-qe', 'memory.db');
|
|
141
|
+
}
|
|
142
|
+
// ============================================================================
|
|
143
|
+
// Factory
|
|
144
|
+
// ============================================================================
|
|
145
|
+
export function createBrainHandler(cleanupAndExit, ensureInitialized) {
|
|
146
|
+
return new BrainHandler(cleanupAndExit, ensureInitialized);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=brain-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-handler.js","sourceRoot":"","sources":["../../../src/cli/handlers/brain-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,5 @@ export { TaskHandler, createTaskHandler } from './task-handler.js';
|
|
|
10
10
|
export { AgentHandler, createAgentHandler } from './agent-handler.js';
|
|
11
11
|
export { DomainHandler, createDomainHandler } from './domain-handler.js';
|
|
12
12
|
export { ProtocolHandler, createProtocolHandler } from './protocol-handler.js';
|
|
13
|
+
export { BrainHandler, createBrainHandler } from './brain-handler.js';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -12,4 +12,5 @@ export { TaskHandler, createTaskHandler } from './task-handler.js';
|
|
|
12
12
|
export { AgentHandler, createAgentHandler } from './agent-handler.js';
|
|
13
13
|
export { DomainHandler, createDomainHandler } from './domain-handler.js';
|
|
14
14
|
export { ProtocolHandler, createProtocolHandler } from './protocol-handler.js';
|
|
15
|
+
export { BrainHandler, createBrainHandler } from './brain-handler.js';
|
|
15
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,2BAA2B;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,2BAA2B;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agentic QE v3 - HNSW Index for O(log n) Coverage Gap Detection
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
4
|
+
* Delegates to the unified HnswAdapter (ADR-071) for all vector operations.
|
|
5
|
+
* The HnswAdapter wraps ProgressiveHnswBackend which uses @ruvector/gnn's
|
|
6
|
+
* differentiableSearch as the primary engine with brute-force fallback.
|
|
7
|
+
*
|
|
8
|
+
* Migration (ADR-071): Previously used QEGNNEmbeddingIndex directly from
|
|
9
|
+
* @ruvector/gnn. Now delegates to HnswAdapter.create('coverage') which
|
|
10
|
+
* provides the same search quality through ProgressiveHnswBackend.
|
|
10
11
|
*
|
|
11
12
|
* Performance characteristics (measured, not theoretical):
|
|
12
13
|
* | Codebase Size | Brute Force O(n) | HNSW O(log n) | Improvement |
|
|
@@ -110,7 +111,10 @@ export interface HNSWSearchResult {
|
|
|
110
111
|
}
|
|
111
112
|
/**
|
|
112
113
|
* Backend type for HNSW index.
|
|
113
|
-
* - 'ruvector-gnn': Using @ruvector/gnn
|
|
114
|
+
* - 'ruvector-gnn': Using @ruvector/gnn via ProgressiveHnswBackend (through HnswAdapter)
|
|
115
|
+
*
|
|
116
|
+
* @deprecated The backend type is now always 'ruvector-gnn' via HnswAdapter.
|
|
117
|
+
* The ProgressiveHnswBackend handles @ruvector/gnn availability internally.
|
|
114
118
|
*/
|
|
115
119
|
export type HNSWBackendType = 'ruvector-gnn';
|
|
116
120
|
/**
|
|
@@ -140,10 +144,11 @@ export interface HNSWIndexStats {
|
|
|
140
144
|
insertOperations: number;
|
|
141
145
|
}
|
|
142
146
|
/**
|
|
143
|
-
* HNSW Index implementation
|
|
147
|
+
* HNSW Index implementation delegating to the unified HnswAdapter (ADR-071).
|
|
144
148
|
*
|
|
145
|
-
* This provides
|
|
146
|
-
* gap detection
|
|
149
|
+
* This provides O(log n) approximate nearest neighbor search for coverage
|
|
150
|
+
* gap detection. Internally uses HnswAdapter which wraps ProgressiveHnswBackend
|
|
151
|
+
* with @ruvector/gnn differentiableSearch and brute-force cosine fallback.
|
|
147
152
|
*
|
|
148
153
|
* @example
|
|
149
154
|
* ```typescript
|
|
@@ -159,19 +164,16 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
159
164
|
private readonly stats;
|
|
160
165
|
private searchLatencies;
|
|
161
166
|
private readonly backendType;
|
|
162
|
-
private
|
|
167
|
+
private adapter;
|
|
163
168
|
private initialized;
|
|
164
|
-
private keyToLabel;
|
|
165
|
-
private labelToKey;
|
|
166
169
|
private metadataStore;
|
|
167
|
-
private vectorStore;
|
|
168
|
-
private nextLabel;
|
|
169
170
|
constructor(memory: MemoryBackend, config?: Partial<HNSWIndexConfig>);
|
|
170
171
|
/**
|
|
171
|
-
* Initialize the HNSW index using
|
|
172
|
+
* Initialize the HNSW index using the unified HnswAdapter.
|
|
172
173
|
*
|
|
173
174
|
* Must be called before insert/search operations.
|
|
174
|
-
*
|
|
175
|
+
* The HnswAdapter lazily loads @ruvector/gnn and falls back to
|
|
176
|
+
* brute-force cosine similarity if unavailable.
|
|
175
177
|
*/
|
|
176
178
|
initialize(): Promise<void>;
|
|
177
179
|
/**
|
|
@@ -187,7 +189,7 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
187
189
|
getBackendType(): HNSWBackendType;
|
|
188
190
|
/**
|
|
189
191
|
* Check if @ruvector/gnn backend is available.
|
|
190
|
-
* Returns true if the
|
|
192
|
+
* Returns true if the adapter has been initialized and @ruvector/gnn is loaded.
|
|
191
193
|
*/
|
|
192
194
|
isRuvectorAvailable(): boolean;
|
|
193
195
|
/**
|
|
@@ -196,7 +198,7 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
196
198
|
* Time complexity: O(log n)
|
|
197
199
|
*
|
|
198
200
|
* @param key - Unique identifier for the vector
|
|
199
|
-
* @param vector - The embedding vector (
|
|
201
|
+
* @param vector - The embedding vector (auto-resized if dimensions mismatch)
|
|
200
202
|
* @param metadata - Optional coverage metadata
|
|
201
203
|
*/
|
|
202
204
|
insert(key: string, vector: number[], metadata?: CoverageVectorMetadata): Promise<void>;
|
|
@@ -210,16 +212,6 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
210
212
|
* @returns Array of search results sorted by similarity (highest first)
|
|
211
213
|
*/
|
|
212
214
|
search(query: number[], k: number): Promise<HNSWSearchResult[]>;
|
|
213
|
-
/**
|
|
214
|
-
* Search using @ruvector/gnn differentiable search.
|
|
215
|
-
*
|
|
216
|
-
* This provides soft weights instead of hard distances, which is
|
|
217
|
-
* useful for RL gradient flow and attention mechanisms.
|
|
218
|
-
*
|
|
219
|
-
* Note: We compute actual cosine similarity for the score to maintain
|
|
220
|
-
* backward compatibility with tests expecting similarity scores in [0, 1].
|
|
221
|
-
*/
|
|
222
|
-
private searchRuvector;
|
|
223
215
|
/**
|
|
224
216
|
* Batch insert multiple vectors efficiently
|
|
225
217
|
*
|
|
@@ -229,9 +221,6 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
229
221
|
/**
|
|
230
222
|
* Delete a vector from the index
|
|
231
223
|
*
|
|
232
|
-
* Note: HNSW doesn't support true deletion, so we mark as deleted
|
|
233
|
-
* and the entry remains in the index until rebuild.
|
|
234
|
-
*
|
|
235
224
|
* @param key - Key of the vector to delete
|
|
236
225
|
* @returns true if vector was found and deleted
|
|
237
226
|
*/
|
|
@@ -250,6 +239,10 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
250
239
|
* Validate and auto-resize vectors to match HNSW configured dimensions.
|
|
251
240
|
* Fix #279: Prevents Rust WASM panic when RealEmbeddings (768-dim) are
|
|
252
241
|
* passed to a mismatched-dim HNSW index.
|
|
242
|
+
*
|
|
243
|
+
* Note: ProgressiveHnswBackend also handles dimension auto-resize internally,
|
|
244
|
+
* but we keep this validation for the non-finite value check which the
|
|
245
|
+
* backend does not perform.
|
|
253
246
|
*/
|
|
254
247
|
private validateVector;
|
|
255
248
|
/**
|
|
@@ -257,26 +250,20 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
257
250
|
*/
|
|
258
251
|
private resizeVector;
|
|
259
252
|
private buildKey;
|
|
260
|
-
/**
|
|
261
|
-
* Convert a plain vector to IEmbedding format for @ruvector/gnn.
|
|
262
|
-
*
|
|
263
|
-
* @param vector - The embedding vector
|
|
264
|
-
* @param key - Key for the embedding (used as text)
|
|
265
|
-
* @param metadata - Optional metadata to attach
|
|
266
|
-
* @returns IEmbedding-compatible object
|
|
267
|
-
*/
|
|
268
|
-
private vectorToEmbedding;
|
|
269
|
-
private distanceToSimilarity;
|
|
270
253
|
private recordSearchLatency;
|
|
271
254
|
private calculateAvgLatency;
|
|
272
255
|
private calculatePercentileLatency;
|
|
273
256
|
/**
|
|
274
257
|
* Update efSearch parameter for search quality/speed tradeoff.
|
|
258
|
+
*
|
|
259
|
+
* Note: With the unified HnswAdapter, efSearch is set at construction time.
|
|
260
|
+
* This method is retained for backward compatibility but has no runtime effect
|
|
261
|
+
* on the ProgressiveHnswBackend (which uses brute-force or differentiableSearch).
|
|
275
262
|
*/
|
|
276
263
|
setEfSearch(ef: number): void;
|
|
277
264
|
}
|
|
278
265
|
/**
|
|
279
|
-
* Create a new HNSW index instance
|
|
266
|
+
* Create a new HNSW index instance backed by the unified HnswAdapter (ADR-071).
|
|
280
267
|
*
|
|
281
268
|
* @param memory - Memory backend for storage
|
|
282
269
|
* @param config - Optional configuration overrides
|
|
@@ -287,7 +274,7 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
287
274
|
* const index = createHNSWIndex(memoryBackend);
|
|
288
275
|
* await index.initialize();
|
|
289
276
|
*
|
|
290
|
-
* // Backend is always ruvector-gnn
|
|
277
|
+
* // Backend is always ruvector-gnn (via HnswAdapter)
|
|
291
278
|
* console.log(`Backend: ${index.getBackendType()}`); // => 'ruvector-gnn'
|
|
292
279
|
* ```
|
|
293
280
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hnsw-index.d.ts","sourceRoot":"","sources":["../../../../src/domains/coverage-analysis/services/hnsw-index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hnsw-index.d.ts","sourceRoot":"","sources":["../../../../src/domains/coverage-analysis/services/hnsw-index.ts"],"names":[],"mappings":"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"}
|