agentic-qe 3.6.9 → 3.6.11
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/.validation/schemas/skill-eval.schema.json +11 -1
- package/.claude/skills/pr-review/SKILL.md +2 -2
- package/.claude/skills/qcsd-production-swarm/SKILL.md +2781 -0
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
- package/.claude/skills/qcsd-production-swarm/schemas/output.json +505 -0
- package/.claude/skills/qcsd-production-swarm/scripts/validate-config.json +25 -0
- package/.claude/skills/skills-manifest.json +5 -5
- package/package.json +1 -1
- package/scripts/benchmark-hnsw-loading.ts +480 -0
- package/scripts/benchmark-kg-assisted.ts +725 -0
- package/scripts/collect-production-telemetry.sh +291 -0
- package/scripts/detect-skill-conflicts.ts +347 -0
- package/scripts/eval-driven-workflow.ts +704 -0
- package/scripts/run-skill-eval.ts +210 -10
- package/scripts/score-skill-quality.ts +511 -0
- package/v3/CHANGELOG.md +44 -0
- package/v3/assets/skills/pr-review/SKILL.md +2 -2
- package/v3/dist/cli/bundle.js +1526 -700
- package/v3/dist/cli/commands/code.d.ts.map +1 -1
- package/v3/dist/cli/commands/code.js +9 -85
- package/v3/dist/cli/commands/code.js.map +1 -1
- package/v3/dist/cli/commands/coverage.d.ts.map +1 -1
- package/v3/dist/cli/commands/coverage.js +3 -28
- package/v3/dist/cli/commands/coverage.js.map +1 -1
- package/v3/dist/cli/commands/hooks.d.ts.map +1 -1
- package/v3/dist/cli/commands/hooks.js +143 -2
- package/v3/dist/cli/commands/hooks.js.map +1 -1
- package/v3/dist/cli/commands/security.d.ts.map +1 -1
- package/v3/dist/cli/commands/security.js +3 -29
- package/v3/dist/cli/commands/security.js.map +1 -1
- package/v3/dist/cli/commands/test.d.ts.map +1 -1
- package/v3/dist/cli/commands/test.js +11 -58
- package/v3/dist/cli/commands/test.js.map +1 -1
- package/v3/dist/cli/utils/file-discovery.d.ts +27 -0
- package/v3/dist/cli/utils/file-discovery.d.ts.map +1 -0
- package/v3/dist/cli/utils/file-discovery.js +105 -0
- package/v3/dist/cli/utils/file-discovery.js.map +1 -0
- package/v3/dist/coordination/task-executor.d.ts.map +1 -1
- package/v3/dist/coordination/task-executor.js +304 -44
- package/v3/dist/coordination/task-executor.js.map +1 -1
- package/v3/dist/domains/code-intelligence/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/coordinator.js +8 -1
- package/v3/dist/domains/code-intelligence/coordinator.js.map +1 -1
- package/v3/dist/domains/code-intelligence/services/metric-collector/index.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/services/metric-collector/index.js +10 -0
- package/v3/dist/domains/code-intelligence/services/metric-collector/index.js.map +1 -1
- package/v3/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts +7 -1
- package/v3/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/services/metric-collector/interfaces.js +10 -1
- package/v3/dist/domains/code-intelligence/services/metric-collector/interfaces.js.map +1 -1
- package/v3/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +34 -10
- package/v3/dist/domains/code-intelligence/services/metric-collector/loc-counter.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts +9 -0
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.js +38 -3
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.js.map +1 -1
- package/v3/dist/domains/test-generation/generators/jest-vitest-generator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js +58 -6
- package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js.map +1 -1
- package/v3/dist/domains/test-generation/generators/mocha-generator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/generators/mocha-generator.js +79 -7
- package/v3/dist/domains/test-generation/generators/mocha-generator.js.map +1 -1
- package/v3/dist/domains/test-generation/generators/pytest-generator.d.ts +4 -0
- package/v3/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/generators/pytest-generator.js +77 -10
- package/v3/dist/domains/test-generation/generators/pytest-generator.js.map +1 -1
- package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts +21 -0
- package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/interfaces.d.ts +21 -0
- package/v3/dist/domains/test-generation/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/test-generator.d.ts +22 -0
- package/v3/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/test-generator.js +163 -3
- package/v3/dist/domains/test-generation/services/test-generator.js.map +1 -1
- package/v3/dist/init/init-wizard-hooks.d.ts +8 -1
- package/v3/dist/init/init-wizard-hooks.d.ts.map +1 -1
- package/v3/dist/init/init-wizard-hooks.js +47 -39
- package/v3/dist/init/init-wizard-hooks.js.map +1 -1
- package/v3/dist/init/phases/07-hooks.d.ts +11 -1
- package/v3/dist/init/phases/07-hooks.d.ts.map +1 -1
- package/v3/dist/init/phases/07-hooks.js +46 -50
- package/v3/dist/init/phases/07-hooks.js.map +1 -1
- package/v3/dist/init/settings-merge.d.ts +35 -0
- package/v3/dist/init/settings-merge.d.ts.map +1 -0
- package/v3/dist/init/settings-merge.js +140 -0
- package/v3/dist/init/settings-merge.js.map +1 -0
- package/v3/dist/integrations/agentic-flow/model-router/router.js +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/router.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/score-calculator.d.ts.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js +18 -3
- package/v3/dist/integrations/agentic-flow/model-router/score-calculator.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts +3 -3
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js +18 -0
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js.map +1 -1
- package/v3/dist/kernel/unified-memory-hnsw.d.ts +29 -0
- package/v3/dist/kernel/unified-memory-hnsw.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory-hnsw.js +136 -0
- package/v3/dist/kernel/unified-memory-hnsw.js.map +1 -1
- package/v3/dist/kernel/unified-memory.d.ts +2 -2
- package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory.js +7 -9
- package/v3/dist/kernel/unified-memory.js.map +1 -1
- package/v3/dist/learning/qe-hooks.d.ts.map +1 -1
- package/v3/dist/learning/qe-hooks.js +34 -3
- package/v3/dist/learning/qe-hooks.js.map +1 -1
- package/v3/dist/mcp/bundle.js +1403 -425
- package/v3/dist/mcp/handlers/domain-handler-configs.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/domain-handler-configs.js +40 -31
- package/v3/dist/mcp/handlers/domain-handler-configs.js.map +1 -1
- package/v3/dist/mcp/handlers/task-handlers.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/task-handlers.js +68 -5
- package/v3/dist/mcp/handlers/task-handlers.js.map +1 -1
- package/v3/dist/mcp/protocol-server.d.ts.map +1 -1
- package/v3/dist/mcp/protocol-server.js +16 -2
- package/v3/dist/mcp/protocol-server.js.map +1 -1
- package/v3/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pytest-generator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/generators/pytest-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EAET,qBAAqB,EAEtB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAY;IAE7C;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"pytest-generator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/generators/pytest-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EAET,qBAAqB,EAEtB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAY;IAE7C;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAiDrD;;OAEG;IACH,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM;IAIpE;;OAEG;IACH,OAAO,CAAC,gCAAgC;IA+BxC;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM;IA0B/D;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IA0GzD;;OAEG;IACH,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,GACd,MAAM;IAiCT;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAKpC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAsBhC"}
|
|
@@ -38,7 +38,7 @@ export class PytestGenerator extends BaseTestGenerator {
|
|
|
38
38
|
* Generate complete test file from analysis
|
|
39
39
|
*/
|
|
40
40
|
generateTests(context) {
|
|
41
|
-
const { moduleName, importPath, testType, patterns, analysis } = context;
|
|
41
|
+
const { moduleName, importPath, testType, patterns, analysis, dependencies } = context;
|
|
42
42
|
if (!analysis || (analysis.functions.length === 0 && analysis.classes.length === 0)) {
|
|
43
43
|
return this.generateStubTests(context);
|
|
44
44
|
}
|
|
@@ -48,8 +48,19 @@ export class PytestGenerator extends BaseTestGenerator {
|
|
|
48
48
|
const importStatement = exports.length > 0
|
|
49
49
|
? `from ${pythonImport} import ${exports.join(', ')}`
|
|
50
50
|
: `import ${pythonImport} as ${moduleName}`;
|
|
51
|
+
// KG: Add mock imports for known dependencies
|
|
52
|
+
let mockImport = '';
|
|
53
|
+
if (dependencies && dependencies.imports.length > 0) {
|
|
54
|
+
mockImport = `from unittest.mock import patch, MagicMock\n`;
|
|
55
|
+
}
|
|
56
|
+
// KG: Build @patch decorator stack for known dependencies
|
|
57
|
+
const depsToMock = dependencies?.imports.slice(0, 5) || [];
|
|
58
|
+
const patchDecorators = depsToMock.map((dep) => {
|
|
59
|
+
const depModule = dep.replace(/\//g, '.').replace(/\.py$/, '');
|
|
60
|
+
return `@patch('${depModule}')`;
|
|
61
|
+
});
|
|
51
62
|
let code = `${patternComment}import pytest
|
|
52
|
-
${importStatement}
|
|
63
|
+
${mockImport}${importStatement}
|
|
53
64
|
|
|
54
65
|
|
|
55
66
|
class Test${this.pascalCase(moduleName)}:
|
|
@@ -57,7 +68,7 @@ class Test${this.pascalCase(moduleName)}:
|
|
|
57
68
|
|
|
58
69
|
`;
|
|
59
70
|
for (const fn of analysis.functions) {
|
|
60
|
-
code += this.
|
|
71
|
+
code += this.generateFunctionTestsWithPatches(fn, testType, patchDecorators);
|
|
61
72
|
}
|
|
62
73
|
for (const cls of analysis.classes) {
|
|
63
74
|
code += this.generateClassTests(cls, testType);
|
|
@@ -68,15 +79,26 @@ class Test${this.pascalCase(moduleName)}:
|
|
|
68
79
|
* Generate tests for a standalone function
|
|
69
80
|
*/
|
|
70
81
|
generateFunctionTests(fn, _testType) {
|
|
82
|
+
return this.generateFunctionTestsWithPatches(fn, _testType, []);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate tests for a function with @patch decorators from KG dependencies
|
|
86
|
+
*/
|
|
87
|
+
generateFunctionTestsWithPatches(fn, _testType, patchDecorators) {
|
|
71
88
|
const validParams = fn.parameters.map((p) => this.generatePythonTestValue(p)).join(', ');
|
|
72
|
-
|
|
89
|
+
// Build mock params for patch decorators (injected right-to-left by Python)
|
|
90
|
+
const mockParams = patchDecorators.map((_, i) => `mock_dep_${i}`).reverse().join(', ');
|
|
91
|
+
const allParams = mockParams ? `self, ${mockParams}` : 'self';
|
|
92
|
+
// Indent patch decorators at class method level
|
|
93
|
+
const patchPrefix = patchDecorators.map((d) => ` ${d}\n`).join('');
|
|
94
|
+
let code = `${patchPrefix} def test_${fn.name}_valid_input(${allParams}):\n`;
|
|
73
95
|
code += ` """Test ${fn.name} with valid input"""\n`;
|
|
74
96
|
code += ` result = ${fn.name}(${validParams})\n`;
|
|
75
97
|
code += ` assert result is not None\n\n`;
|
|
76
|
-
// Test for edge cases
|
|
98
|
+
// Test for edge cases (no patches needed — they test the function directly)
|
|
77
99
|
for (const param of fn.parameters) {
|
|
78
100
|
if (!param.optional && param.type?.includes('str')) {
|
|
79
|
-
code +=
|
|
101
|
+
code += `${patchPrefix} def test_${fn.name}_empty_${param.name}(${allParams}):\n`;
|
|
80
102
|
code += ` """Test ${fn.name} with empty ${param.name}"""\n`;
|
|
81
103
|
const paramsWithEmpty = fn.parameters
|
|
82
104
|
.map((p) => (p.name === param.name ? '""' : this.generatePythonTestValue(p)))
|
|
@@ -115,20 +137,65 @@ class Test${this.pascalCase(moduleName)}:
|
|
|
115
137
|
* Generate stub tests when no AST analysis is available
|
|
116
138
|
*/
|
|
117
139
|
generateStubTests(context) {
|
|
118
|
-
const { moduleName, importPath, testType, patterns } = context;
|
|
140
|
+
const { moduleName, importPath, testType, patterns, dependencies, similarCode } = context;
|
|
119
141
|
const patternComment = this.generatePythonPatternComment(patterns);
|
|
120
142
|
// Determine if async tests needed based on patterns
|
|
121
143
|
const isAsync = patterns.some((p) => p.name.toLowerCase().includes('async') || p.name.toLowerCase().includes('promise'));
|
|
122
144
|
const asyncDecorator = isAsync ? '@pytest.mark.asyncio\n ' : '';
|
|
123
145
|
const asyncDef = isAsync ? 'async def' : 'def';
|
|
146
|
+
// KG: Generate mock patches for known dependencies
|
|
147
|
+
let mockImports = '';
|
|
148
|
+
let mockPatches = '';
|
|
149
|
+
if (dependencies && dependencies.imports.length > 0) {
|
|
150
|
+
mockImports = `from unittest.mock import patch, MagicMock\n`;
|
|
151
|
+
const depsToMock = dependencies.imports.slice(0, 5);
|
|
152
|
+
for (const dep of depsToMock) {
|
|
153
|
+
const depModule = dep.replace(/\//g, '.').replace(/\.py$/, '');
|
|
154
|
+
mockPatches += ` @patch('${depModule}')\n`;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// KG: Generate similarity-informed test hints
|
|
158
|
+
let similarityComment = '';
|
|
159
|
+
if (similarCode && similarCode.snippets.length > 0) {
|
|
160
|
+
similarityComment = ` # KG: Similar modules found - consider testing shared patterns:\n`;
|
|
161
|
+
for (const s of similarCode.snippets.slice(0, 3)) {
|
|
162
|
+
similarityComment += ` # - ${s.file} (${(s.score * 100).toFixed(0)}% similar)\n`;
|
|
163
|
+
}
|
|
164
|
+
similarityComment += `\n`;
|
|
165
|
+
}
|
|
166
|
+
// KG: Generate dependency integration tests
|
|
167
|
+
let depTests = '';
|
|
168
|
+
if (dependencies && dependencies.imports.length > 0) {
|
|
169
|
+
depTests += `\n def test_dependencies_importable(self):\n`;
|
|
170
|
+
depTests += ` """Verify all dependencies are importable (KG-informed)."""\n`;
|
|
171
|
+
for (const dep of dependencies.imports.slice(0, 5)) {
|
|
172
|
+
const depModule = dep.replace(/\//g, '.').replace(/\.py$/, '');
|
|
173
|
+
depTests += ` import importlib\n`;
|
|
174
|
+
depTests += ` mod = importlib.import_module('${depModule}')\n`;
|
|
175
|
+
depTests += ` assert mod is not None\n`;
|
|
176
|
+
}
|
|
177
|
+
depTests += `\n def test_dependency_interactions(self):\n`;
|
|
178
|
+
depTests += ` """Test module interactions with its dependencies (KG-informed)."""\n`;
|
|
179
|
+
depTests += ` # Module should handle dependency failures gracefully\n`;
|
|
180
|
+
depTests += ` assert ${moduleName} is not None\n`;
|
|
181
|
+
depTests += ` assert hasattr(${moduleName}, '__name__') or hasattr(${moduleName}, '__class__')\n`;
|
|
182
|
+
}
|
|
183
|
+
// KG: Generate callers-aware API surface tests
|
|
184
|
+
let callerTests = '';
|
|
185
|
+
if (dependencies && dependencies.importedBy.length > 0) {
|
|
186
|
+
callerTests += `\n def test_public_api_surface(self):\n`;
|
|
187
|
+
callerTests += ` """Verify public API used by ${dependencies.importedBy.length} consumers (KG-informed)."""\n`;
|
|
188
|
+
callerTests += ` public_attrs = [a for a in dir(${moduleName}) if not a.startswith('_')]\n`;
|
|
189
|
+
callerTests += ` assert len(public_attrs) > 0, "Module should expose public API"\n`;
|
|
190
|
+
}
|
|
124
191
|
return `${patternComment}import pytest
|
|
125
|
-
from ${importPath} import ${moduleName}
|
|
192
|
+
${mockImports}from ${importPath} import ${moduleName}
|
|
126
193
|
|
|
127
194
|
|
|
128
195
|
class Test${this.pascalCase(moduleName)}:
|
|
129
196
|
"""${testType} tests for ${moduleName}"""
|
|
130
197
|
|
|
131
|
-
def test_is_defined(self):
|
|
198
|
+
${similarityComment} def test_is_defined(self):
|
|
132
199
|
"""Verify the module is properly exported and defined."""
|
|
133
200
|
assert ${moduleName} is not None
|
|
134
201
|
|
|
@@ -162,7 +229,7 @@ class Test${this.pascalCase(moduleName)}:
|
|
|
162
229
|
except TypeError:
|
|
163
230
|
# Expected if constructor requires arguments
|
|
164
231
|
pass
|
|
165
|
-
`;
|
|
232
|
+
${depTests}${callerTests}`;
|
|
166
233
|
}
|
|
167
234
|
/**
|
|
168
235
|
* Generate coverage-focused tests for specific lines
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pytest-generator.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/generators/pytest-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAW1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAC3C,SAAS,GAAkB,QAAQ,CAAC;IAE7C;;OAEG;IACH,aAAa,CAAC,OAA8B;QAC1C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pytest-generator.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/generators/pytest-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,6 +79,25 @@ export interface CodeAnalysis {
|
|
|
79
79
|
functions: FunctionInfo[];
|
|
80
80
|
classes: ClassInfo[];
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* KG-sourced dependency context for a file
|
|
84
|
+
*/
|
|
85
|
+
export interface KGDependencyContext {
|
|
86
|
+
imports: string[];
|
|
87
|
+
importedBy: string[];
|
|
88
|
+
callees: string[];
|
|
89
|
+
callers: string[];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* KG-sourced similar code context
|
|
93
|
+
*/
|
|
94
|
+
export interface KGSimilarCodeContext {
|
|
95
|
+
snippets: Array<{
|
|
96
|
+
file: string;
|
|
97
|
+
snippet: string;
|
|
98
|
+
score: number;
|
|
99
|
+
}>;
|
|
100
|
+
}
|
|
82
101
|
/**
|
|
83
102
|
* Context for test generation
|
|
84
103
|
*/
|
|
@@ -88,6 +107,8 @@ export interface TestGenerationContext {
|
|
|
88
107
|
testType: TestType;
|
|
89
108
|
patterns: Pattern[];
|
|
90
109
|
analysis?: CodeAnalysis;
|
|
110
|
+
dependencies?: KGDependencyContext;
|
|
111
|
+
similarCode?: KGSimilarCodeContext;
|
|
91
112
|
}
|
|
92
113
|
/**
|
|
93
114
|
* ITestGenerator - Strategy interface for framework-specific test generation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-generator.interface.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/interfaces/test-generator.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,aAAa,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,gBAAgB,GAAG,UAAU,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"test-generator.interface.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/interfaces/test-generator.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,6 +159,25 @@ export interface ICodeAnalysis {
|
|
|
159
159
|
functions: IFunctionInfo[];
|
|
160
160
|
classes: IClassInfo[];
|
|
161
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* KG-sourced dependency context for a file
|
|
164
|
+
*/
|
|
165
|
+
export interface KGDependencyContext {
|
|
166
|
+
imports: string[];
|
|
167
|
+
importedBy: string[];
|
|
168
|
+
callees: string[];
|
|
169
|
+
callers: string[];
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* KG-sourced similar code context
|
|
173
|
+
*/
|
|
174
|
+
export interface KGSimilarCodeContext {
|
|
175
|
+
snippets: Array<{
|
|
176
|
+
file: string;
|
|
177
|
+
snippet: string;
|
|
178
|
+
score: number;
|
|
179
|
+
}>;
|
|
180
|
+
}
|
|
162
181
|
/**
|
|
163
182
|
* Context for test generation
|
|
164
183
|
*/
|
|
@@ -168,6 +187,8 @@ export interface ITestGenerationContext {
|
|
|
168
187
|
testType: TestType;
|
|
169
188
|
patterns: IPattern[];
|
|
170
189
|
analysis?: ICodeAnalysis;
|
|
190
|
+
dependencies?: KGDependencyContext;
|
|
191
|
+
similarCode?: KGSimilarCodeContext;
|
|
171
192
|
}
|
|
172
193
|
/**
|
|
173
194
|
* ITestGenerator - Strategy interface for framework-specific test generation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/domains/test-generation/interfaces.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/domains/test-generation/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -119,6 +119,28 @@ export declare class TestGeneratorService implements ITestGenerationService {
|
|
|
119
119
|
private extractClassInfo;
|
|
120
120
|
private extractParameters;
|
|
121
121
|
private calculateComplexity;
|
|
122
|
+
/**
|
|
123
|
+
* Check if KG vectors exist by probing a vector search.
|
|
124
|
+
* Returns true if vectorSearch returns any results (indicating indexed code exists).
|
|
125
|
+
*/
|
|
126
|
+
private hasKGVectors;
|
|
127
|
+
/**
|
|
128
|
+
* Query KG for dependency information about a file.
|
|
129
|
+
* Extracts imports from source and cross-references with KG vector index
|
|
130
|
+
* to find which indexed modules this file depends on and which depend on it.
|
|
131
|
+
*/
|
|
132
|
+
private queryKGDependencies;
|
|
133
|
+
/**
|
|
134
|
+
* Query KG for semantically similar code snippets.
|
|
135
|
+
* Uses vector search against the persisted vectors table.
|
|
136
|
+
* KG nodes are stored as vectors with IDs like code-intelligence:kg:node:*
|
|
137
|
+
*/
|
|
138
|
+
private queryKGSimilarCode;
|
|
139
|
+
/**
|
|
140
|
+
* Generate a simple pseudo-embedding for vector search.
|
|
141
|
+
* Uses token-based feature extraction similar to semantic-analyzer.
|
|
142
|
+
*/
|
|
143
|
+
private generatePseudoEmbedding;
|
|
122
144
|
private findApplicablePatterns;
|
|
123
145
|
private groupConsecutiveLines;
|
|
124
146
|
private getTestFilePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-generator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/services/test-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,MAAM,EAAW,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,QAAQ,EAET,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,aAAa,
|
|
1
|
+
{"version":3,"file":"test-generator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/services/test-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,11 +76,36 @@ export class TestGeneratorService {
|
|
|
76
76
|
* Enhance generated test code using LLM
|
|
77
77
|
* Adds edge cases, improves assertions, and adds documentation
|
|
78
78
|
*/
|
|
79
|
-
async enhanceTestWithLLM(testCode, sourceCode, analysis) {
|
|
79
|
+
async enhanceTestWithLLM(testCode, sourceCode, analysis, context) {
|
|
80
80
|
if (!this.llmRouter)
|
|
81
81
|
return testCode;
|
|
82
82
|
try {
|
|
83
|
-
|
|
83
|
+
let prompt = this.buildTestEnhancementPrompt(testCode, sourceCode, analysis);
|
|
84
|
+
// Append KG context if available
|
|
85
|
+
if (context?.dependencies) {
|
|
86
|
+
prompt += `\n## Dependency Context (from Knowledge Graph):\n`;
|
|
87
|
+
if (context.dependencies.imports.length > 0) {
|
|
88
|
+
prompt += `- Imports: ${context.dependencies.imports.join(', ')}\n`;
|
|
89
|
+
prompt += ` → Generate mock declarations for these dependencies\n`;
|
|
90
|
+
}
|
|
91
|
+
if (context.dependencies.importedBy.length > 0) {
|
|
92
|
+
prompt += `- Imported by: ${context.dependencies.importedBy.join(', ')}\n`;
|
|
93
|
+
prompt += ` → Focus tests on the public API surface these consumers use\n`;
|
|
94
|
+
}
|
|
95
|
+
if (context.dependencies.callers.length > 0) {
|
|
96
|
+
prompt += `- Called by: ${context.dependencies.callers.join(', ')}\n`;
|
|
97
|
+
}
|
|
98
|
+
if (context.dependencies.callees.length > 0) {
|
|
99
|
+
prompt += `- Calls: ${context.dependencies.callees.join(', ')}\n`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (context?.similarCode && context.similarCode.snippets.length > 0) {
|
|
103
|
+
prompt += `\n## Similar Code Patterns (from Knowledge Graph):\n`;
|
|
104
|
+
for (const s of context.similarCode.snippets.slice(0, 3)) {
|
|
105
|
+
prompt += `- ${s.file} (similarity: ${(s.score * 100).toFixed(0)}%): ${s.snippet}\n`;
|
|
106
|
+
}
|
|
107
|
+
prompt += ` → Use similar patterns as templates for assertions\n`;
|
|
108
|
+
}
|
|
84
109
|
const modelId = this.getModelForTier(this.config.llmModelTier);
|
|
85
110
|
const response = await this.llmRouter.chat({
|
|
86
111
|
messages: [
|
|
@@ -147,6 +172,7 @@ Return ONLY the enhanced test code, no explanations.`,
|
|
|
147
172
|
prompt += `3. Add descriptive test names that explain what is being tested\n`;
|
|
148
173
|
prompt += `4. Add error handling tests if applicable\n`;
|
|
149
174
|
prompt += `5. Keep the test framework style consistent\n`;
|
|
175
|
+
// KG context is appended separately via enhanceTestWithLLM caller
|
|
150
176
|
return prompt;
|
|
151
177
|
}
|
|
152
178
|
/**
|
|
@@ -301,6 +327,17 @@ Return a JSON array of test suggestions, each with: { "name": "test name", "desc
|
|
|
301
327
|
catch {
|
|
302
328
|
// File doesn't exist or can't be read - use stub generation
|
|
303
329
|
}
|
|
330
|
+
// Query KG for dependency and semantic context
|
|
331
|
+
let dependencies;
|
|
332
|
+
let similarCode;
|
|
333
|
+
// Query KG context when code intelligence vectors exist
|
|
334
|
+
if (this.memory && sourceContent) {
|
|
335
|
+
const hasKGVectors = await this.hasKGVectors();
|
|
336
|
+
if (hasKGVectors) {
|
|
337
|
+
dependencies = await this.queryKGDependencies(sourceFile, sourceContent);
|
|
338
|
+
similarCode = await this.queryKGSimilarCode(sourceContent);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
304
341
|
const generator = this.generatorFactory.create(framework);
|
|
305
342
|
const moduleName = this.extractModuleName(sourceFile);
|
|
306
343
|
const importPath = this.getImportPath(sourceFile);
|
|
@@ -310,11 +347,13 @@ Return a JSON array of test suggestions, each with: { "name": "test name", "desc
|
|
|
310
347
|
testType,
|
|
311
348
|
patterns: applicablePatterns,
|
|
312
349
|
analysis: codeAnalysis ?? undefined,
|
|
350
|
+
dependencies,
|
|
351
|
+
similarCode,
|
|
313
352
|
};
|
|
314
353
|
let testCode = generator.generateTests(context);
|
|
315
354
|
// ADR-051: Enhance with LLM if enabled and available
|
|
316
355
|
if (this.isLLMEnhancementAvailable() && sourceContent) {
|
|
317
|
-
testCode = await this.enhanceTestWithLLM(testCode, sourceContent, codeAnalysis);
|
|
356
|
+
testCode = await this.enhanceTestWithLLM(testCode, sourceContent, codeAnalysis, context);
|
|
318
357
|
}
|
|
319
358
|
const test = {
|
|
320
359
|
id: uuidv4(),
|
|
@@ -509,6 +548,127 @@ Return a JSON array of test suggestions, each with: { "name": "test name", "desc
|
|
|
509
548
|
return complexity;
|
|
510
549
|
}
|
|
511
550
|
// ============================================================================
|
|
551
|
+
// Private Helper Methods - Knowledge Graph Queries
|
|
552
|
+
// ============================================================================
|
|
553
|
+
/**
|
|
554
|
+
* Check if KG vectors exist by probing a vector search.
|
|
555
|
+
* Returns true if vectorSearch returns any results (indicating indexed code exists).
|
|
556
|
+
*/
|
|
557
|
+
async hasKGVectors() {
|
|
558
|
+
try {
|
|
559
|
+
// Probe with a simple unit vector to see if any vectors exist
|
|
560
|
+
// Use 768 dimensions to match the standard MiniLM embedding size
|
|
561
|
+
const probe = new Array(768).fill(0);
|
|
562
|
+
probe[0] = 1.0; // Unit vector in first dimension
|
|
563
|
+
const results = await this.memory.vectorSearch(probe, 1);
|
|
564
|
+
return results.length > 0;
|
|
565
|
+
}
|
|
566
|
+
catch {
|
|
567
|
+
return false;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Query KG for dependency information about a file.
|
|
572
|
+
* Extracts imports from source and cross-references with KG vector index
|
|
573
|
+
* to find which indexed modules this file depends on and which depend on it.
|
|
574
|
+
*/
|
|
575
|
+
async queryKGDependencies(filePath, sourceContent) {
|
|
576
|
+
try {
|
|
577
|
+
const imports = [];
|
|
578
|
+
const importedBy = [];
|
|
579
|
+
const callees = [];
|
|
580
|
+
const callers = [];
|
|
581
|
+
// Extract imports via regex (supports TS/JS and Python)
|
|
582
|
+
const tsImports = sourceContent.matchAll(/(?:import|from)\s+['"]([^'"]+)['"]/g);
|
|
583
|
+
const pyImports = sourceContent.matchAll(/(?:^|\n)\s*(?:from\s+(\S+)\s+import|import\s+(\S+))/g);
|
|
584
|
+
for (const match of tsImports) {
|
|
585
|
+
imports.push(match[1]);
|
|
586
|
+
}
|
|
587
|
+
for (const match of pyImports) {
|
|
588
|
+
imports.push(match[1] || match[2]);
|
|
589
|
+
}
|
|
590
|
+
// Cross-reference with KG vectors to find callers (files that import this one)
|
|
591
|
+
const normalizedPath = filePath.replace(/\\/g, '/');
|
|
592
|
+
const baseName = normalizedPath.split('/').pop()?.replace(/\.(ts|js|tsx|jsx|py)$/, '') || '';
|
|
593
|
+
// Search KG node vectors for this file's name to find related nodes
|
|
594
|
+
const nodeKeys = await this.memory.search(`code-intelligence:kg:node:*${baseName}*`, 50);
|
|
595
|
+
for (const key of nodeKeys) {
|
|
596
|
+
// Nodes matching this file's name that are from other files indicate callers
|
|
597
|
+
if (!key.includes(baseName))
|
|
598
|
+
continue;
|
|
599
|
+
// Extract the file path from the vector key format:
|
|
600
|
+
// code-intelligence:kg:node:<path>:<type>:<name>
|
|
601
|
+
const parts = key.split(':');
|
|
602
|
+
const nodeType = parts[parts.length - 2]; // 'function', 'class', 'module'
|
|
603
|
+
const nodeName = parts[parts.length - 1];
|
|
604
|
+
if (nodeType === 'function') {
|
|
605
|
+
callees.push(nodeName);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
// Only return if we found any data
|
|
609
|
+
if (imports.length === 0 && importedBy.length === 0 && callees.length === 0 && callers.length === 0) {
|
|
610
|
+
return undefined;
|
|
611
|
+
}
|
|
612
|
+
return { imports, importedBy, callees, callers };
|
|
613
|
+
}
|
|
614
|
+
catch {
|
|
615
|
+
// KG is optional enrichment, never blocks generation
|
|
616
|
+
return undefined;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* Query KG for semantically similar code snippets.
|
|
621
|
+
* Uses vector search against the persisted vectors table.
|
|
622
|
+
* KG nodes are stored as vectors with IDs like code-intelligence:kg:node:*
|
|
623
|
+
*/
|
|
624
|
+
async queryKGSimilarCode(sourceContent) {
|
|
625
|
+
try {
|
|
626
|
+
// Generate a pseudo-embedding for the source content
|
|
627
|
+
const embedding = this.generatePseudoEmbedding(sourceContent);
|
|
628
|
+
const results = await this.memory.vectorSearch(embedding, 5);
|
|
629
|
+
if (results.length === 0)
|
|
630
|
+
return undefined;
|
|
631
|
+
const snippets = [];
|
|
632
|
+
for (const result of results) {
|
|
633
|
+
if (result.score < 0.1)
|
|
634
|
+
continue; // Skip low-relevance results
|
|
635
|
+
const metadata = result.metadata;
|
|
636
|
+
const file = metadata?.file || result.key;
|
|
637
|
+
const snippet = metadata?.name || metadata?.type || result.key.split(':').pop() || '';
|
|
638
|
+
snippets.push({ file, snippet, score: result.score });
|
|
639
|
+
}
|
|
640
|
+
return snippets.length > 0 ? { snippets } : undefined;
|
|
641
|
+
}
|
|
642
|
+
catch {
|
|
643
|
+
// KG is optional enrichment, never blocks generation
|
|
644
|
+
return undefined;
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
/**
|
|
648
|
+
* Generate a simple pseudo-embedding for vector search.
|
|
649
|
+
* Uses token-based feature extraction similar to semantic-analyzer.
|
|
650
|
+
*/
|
|
651
|
+
generatePseudoEmbedding(code) {
|
|
652
|
+
const dimension = 768; // Match MiniLM embedding size used by code-intelligence indexer
|
|
653
|
+
const embedding = new Array(dimension).fill(0);
|
|
654
|
+
// Tokenize by splitting on non-alphanumeric chars
|
|
655
|
+
const tokens = code.split(/[^a-zA-Z0-9_$]+/).filter(t => t.length > 1);
|
|
656
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
657
|
+
const token = tokens[i];
|
|
658
|
+
for (let j = 0; j < token.length && j < embedding.length; j++) {
|
|
659
|
+
embedding[(i + j) % dimension] += token.charCodeAt(j) / 1000;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
// Normalize
|
|
663
|
+
const magnitude = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));
|
|
664
|
+
if (magnitude > 0) {
|
|
665
|
+
for (let i = 0; i < dimension; i++) {
|
|
666
|
+
embedding[i] /= magnitude;
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
return embedding;
|
|
670
|
+
}
|
|
671
|
+
// ============================================================================
|
|
512
672
|
// Private Helper Methods - Utility Functions
|
|
513
673
|
// ============================================================================
|
|
514
674
|
async findApplicablePatterns(sourceFile, requestedPatterns) {
|