agentic-qe 3.8.7 → 3.8.9
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/agents/n8n/n8n-base-agent.md +4 -35
- package/.claude/agents/n8n/n8n-bdd-scenario-tester.md +4 -25
- package/.claude/agents/n8n/n8n-chaos-tester.md +4 -26
- package/.claude/agents/n8n/n8n-ci-orchestrator.md +4 -27
- package/.claude/agents/n8n/n8n-compliance-validator.md +4 -25
- package/.claude/agents/n8n/n8n-expression-validator.md +4 -25
- package/.claude/agents/n8n/n8n-integration-test.md +4 -27
- package/.claude/agents/n8n/n8n-monitoring-validator.md +4 -26
- package/.claude/agents/n8n/n8n-node-validator.md +4 -25
- package/.claude/agents/n8n/n8n-performance-tester.md +4 -29
- package/.claude/agents/n8n/n8n-security-auditor.md +4 -26
- package/.claude/agents/n8n/n8n-trigger-test.md +4 -27
- package/.claude/agents/n8n/n8n-unit-tester.md +4 -25
- package/.claude/agents/n8n/n8n-version-comparator.md +4 -26
- package/.claude/agents/n8n/n8n-workflow-executor.md +4 -26
- package/.claude/agents/v3/qe-accessibility-auditor.md +21 -55
- package/.claude/agents/v3/qe-bdd-generator.md +23 -58
- package/.claude/agents/v3/qe-chaos-engineer.md +21 -54
- package/.claude/agents/v3/qe-code-complexity.md +21 -54
- package/.claude/agents/v3/qe-code-intelligence.md +21 -54
- package/.claude/agents/v3/qe-contract-validator.md +21 -53
- package/.claude/agents/v3/qe-coverage-specialist.md +23 -79
- package/.claude/agents/v3/qe-defect-predictor.md +23 -76
- package/.claude/agents/v3/qe-dependency-mapper.md +21 -53
- package/.claude/agents/v3/qe-deployment-advisor.md +21 -54
- package/.claude/agents/v3/qe-devils-advocate.md +212 -238
- package/.claude/agents/v3/qe-flaky-hunter.md +21 -53
- package/.claude/agents/v3/qe-fleet-commander.md +21 -54
- package/.claude/agents/v3/qe-gap-detector.md +23 -79
- package/.claude/agents/v3/qe-graphql-tester.md +21 -54
- package/.claude/agents/v3/qe-impact-analyzer.md +21 -53
- package/.claude/agents/v3/qe-integration-architect.md +2 -2
- package/.claude/agents/v3/qe-integration-tester.md +15 -36
- package/.claude/agents/v3/qe-kg-builder.md +21 -53
- package/.claude/agents/v3/qe-learning-coordinator.md +21 -51
- package/.claude/agents/v3/qe-load-tester.md +21 -55
- package/.claude/agents/v3/qe-message-broker-tester.md +345 -385
- package/.claude/agents/v3/qe-metrics-optimizer.md +21 -54
- package/.claude/agents/v3/qe-middleware-validator.md +389 -428
- package/.claude/agents/v3/qe-mutation-tester.md +21 -54
- package/.claude/agents/v3/qe-odata-contract-tester.md +443 -489
- package/.claude/agents/v3/qe-parallel-executor.md +21 -52
- package/.claude/agents/v3/qe-pattern-learner.md +23 -70
- package/.claude/agents/v3/qe-pentest-validator.md +322 -359
- package/.claude/agents/v3/qe-performance-tester.md +21 -54
- package/.claude/agents/v3/qe-product-factors-assessor.md +339 -376
- package/.claude/agents/v3/qe-property-tester.md +21 -53
- package/.claude/agents/v3/qe-quality-criteria-recommender.md +379 -410
- package/.claude/agents/v3/qe-quality-gate.md +17 -64
- package/.claude/agents/v3/qe-queen-coordinator.md +71 -121
- package/.claude/agents/v3/qe-qx-partner.md +23 -64
- package/.claude/agents/v3/qe-regression-analyzer.md +21 -54
- package/.claude/agents/v3/qe-requirements-validator.md +23 -66
- package/.claude/agents/v3/qe-responsive-tester.md +21 -54
- package/.claude/agents/v3/qe-retry-handler.md +21 -53
- package/.claude/agents/v3/qe-risk-assessor.md +23 -58
- package/.claude/agents/v3/qe-root-cause-analyzer.md +21 -53
- package/.claude/agents/v3/qe-sap-idoc-tester.md +371 -412
- package/.claude/agents/v3/qe-sap-rfc-tester.md +323 -362
- package/.claude/agents/v3/qe-security-auditor.md +21 -54
- package/.claude/agents/v3/qe-security-scanner.md +21 -58
- package/.claude/agents/v3/qe-soap-tester.md +307 -345
- package/.claude/agents/v3/qe-sod-analyzer.md +486 -533
- package/.claude/agents/v3/qe-tdd-specialist.md +17 -42
- package/.claude/agents/v3/qe-test-architect.md +23 -58
- package/.claude/agents/v3/qe-test-idea-rewriter.md +351 -375
- package/.claude/agents/v3/qe-transfer-specialist.md +21 -55
- package/.claude/agents/v3/qe-visual-tester.md +15 -37
- package/.claude/agents/v3/subagents/qe-code-reviewer.md +21 -54
- package/.claude/agents/v3/subagents/qe-integration-reviewer.md +21 -54
- package/.claude/agents/v3/subagents/qe-performance-reviewer.md +21 -54
- package/.claude/agents/v3/subagents/qe-security-reviewer.md +21 -54
- package/.claude/agents/v3/subagents/qe-tdd-green.md +21 -53
- package/.claude/agents/v3/subagents/qe-tdd-red.md +21 -53
- package/.claude/agents/v3/subagents/qe-tdd-refactor.md +21 -53
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +5 -5
- package/.claude/skills/.validation/skill-validation-mcp-integration.md +32 -81
- package/.claude/skills/agentic-quality-engineering/SKILL.md +31 -60
- package/.claude/skills/iterative-loop/SKILL.md +2 -2
- package/.claude/skills/pair-programming/SKILL.md +2 -2
- package/.claude/skills/performance-testing/SKILL.md +1 -1
- package/.claude/skills/qcsd-cicd-swarm/steps/01-flag-detection.md +2 -2
- package/.claude/skills/qcsd-cicd-swarm/steps/07-learning-persistence.md +6 -6
- package/.claude/skills/qcsd-development-swarm/steps/01-flag-detection.md +2 -2
- package/.claude/skills/qcsd-development-swarm/steps/07-learning-persistence.md +6 -6
- package/.claude/skills/qcsd-ideation-swarm/steps/07-learning-persistence.md +6 -6
- package/.claude/skills/qcsd-production-swarm/steps/01-flag-detection.md +202 -206
- package/.claude/skills/qcsd-production-swarm/steps/07-learning-persistence.md +157 -185
- package/.claude/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +87 -91
- package/.claude/skills/qcsd-refinement-swarm/steps/07-learning-persistence.md +49 -53
- package/.claude/skills/qe-chaos-resilience/SKILL.md +2 -2
- package/.claude/skills/qe-code-intelligence/SKILL.md +2 -2
- package/.claude/skills/qe-coverage-analysis/SKILL.md +2 -2
- package/.claude/skills/qe-defect-intelligence/SKILL.md +2 -2
- package/.claude/skills/qe-iterative-loop/SKILL.md +12 -12
- package/.claude/skills/qe-learning-optimization/SKILL.md +2 -2
- package/.claude/skills/qe-quality-assessment/SKILL.md +2 -2
- package/.claude/skills/qe-requirements-validation/SKILL.md +2 -2
- package/.claude/skills/qe-test-execution/SKILL.md +2 -2
- package/.claude/skills/qe-test-generation/SKILL.md +2 -2
- package/.claude/skills/qe-visual-accessibility/SKILL.md +2 -2
- package/.claude/skills/quality-metrics/SKILL.md +1 -1
- package/.claude/skills/security-testing/SKILL.md +1 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/validation-pipeline/SKILL.md +2 -2
- package/.claude/skills/verification-quality/SKILL.md +2 -2
- package/CHANGELOG.md +31 -0
- package/assets/agents/v3/qe-accessibility-auditor.md +21 -55
- package/assets/agents/v3/qe-bdd-generator.md +23 -58
- package/assets/agents/v3/qe-chaos-engineer.md +21 -54
- package/assets/agents/v3/qe-code-complexity.md +21 -54
- package/assets/agents/v3/qe-code-intelligence.md +21 -54
- package/assets/agents/v3/qe-contract-validator.md +21 -53
- package/assets/agents/v3/qe-coverage-specialist.md +23 -79
- package/assets/agents/v3/qe-defect-predictor.md +23 -76
- package/assets/agents/v3/qe-dependency-mapper.md +21 -53
- package/assets/agents/v3/qe-deployment-advisor.md +21 -54
- package/assets/agents/v3/qe-devils-advocate.md +212 -238
- package/assets/agents/v3/qe-flaky-hunter.md +21 -53
- package/assets/agents/v3/qe-fleet-commander.md +21 -54
- package/assets/agents/v3/qe-gap-detector.md +23 -79
- package/assets/agents/v3/qe-graphql-tester.md +21 -54
- package/assets/agents/v3/qe-impact-analyzer.md +21 -53
- package/assets/agents/v3/qe-integration-architect.md +2 -2
- package/assets/agents/v3/qe-integration-tester.md +15 -36
- package/assets/agents/v3/qe-kg-builder.md +21 -53
- package/assets/agents/v3/qe-learning-coordinator.md +21 -51
- package/assets/agents/v3/qe-load-tester.md +21 -55
- package/assets/agents/v3/qe-message-broker-tester.md +345 -385
- package/assets/agents/v3/qe-metrics-optimizer.md +21 -54
- package/assets/agents/v3/qe-middleware-validator.md +389 -428
- package/assets/agents/v3/qe-mutation-tester.md +21 -54
- package/assets/agents/v3/qe-odata-contract-tester.md +443 -489
- package/assets/agents/v3/qe-parallel-executor.md +21 -52
- package/assets/agents/v3/qe-pattern-learner.md +23 -70
- package/assets/agents/v3/qe-pentest-validator.md +322 -359
- package/assets/agents/v3/qe-performance-tester.md +21 -54
- package/assets/agents/v3/qe-product-factors-assessor.md +339 -376
- package/assets/agents/v3/qe-property-tester.md +21 -53
- package/assets/agents/v3/qe-quality-criteria-recommender.md +379 -410
- package/assets/agents/v3/qe-quality-gate.md +17 -64
- package/assets/agents/v3/qe-queen-coordinator.md +71 -121
- package/assets/agents/v3/qe-qx-partner.md +23 -64
- package/assets/agents/v3/qe-regression-analyzer.md +21 -54
- package/assets/agents/v3/qe-requirements-validator.md +23 -66
- package/assets/agents/v3/qe-responsive-tester.md +21 -54
- package/assets/agents/v3/qe-retry-handler.md +21 -53
- package/assets/agents/v3/qe-risk-assessor.md +23 -58
- package/assets/agents/v3/qe-root-cause-analyzer.md +21 -53
- package/assets/agents/v3/qe-sap-idoc-tester.md +371 -412
- package/assets/agents/v3/qe-sap-rfc-tester.md +323 -362
- package/assets/agents/v3/qe-security-auditor.md +21 -54
- package/assets/agents/v3/qe-security-scanner.md +21 -58
- package/assets/agents/v3/qe-soap-tester.md +307 -345
- package/assets/agents/v3/qe-sod-analyzer.md +486 -533
- package/assets/agents/v3/qe-tdd-specialist.md +17 -42
- package/assets/agents/v3/qe-test-architect.md +23 -58
- package/assets/agents/v3/qe-test-idea-rewriter.md +351 -375
- package/assets/agents/v3/qe-transfer-specialist.md +21 -55
- package/assets/agents/v3/qe-visual-tester.md +15 -37
- package/assets/agents/v3/subagents/qe-code-reviewer.md +21 -54
- package/assets/agents/v3/subagents/qe-integration-reviewer.md +21 -54
- package/assets/agents/v3/subagents/qe-performance-reviewer.md +21 -54
- package/assets/agents/v3/subagents/qe-security-reviewer.md +21 -54
- package/assets/agents/v3/subagents/qe-tdd-green.md +21 -53
- package/assets/agents/v3/subagents/qe-tdd-red.md +21 -53
- package/assets/agents/v3/subagents/qe-tdd-refactor.md +21 -53
- package/assets/grammars/tree-sitter-c_sharp.wasm +0 -0
- package/assets/grammars/tree-sitter-java.wasm +0 -0
- package/assets/grammars/tree-sitter-python.wasm +0 -0
- package/assets/grammars/tree-sitter-rust.wasm +0 -0
- package/assets/grammars/tree-sitter-swift.wasm +0 -0
- package/assets/skills/.validation/schemas/skill-eval.schema.json +5 -5
- package/assets/skills/.validation/skill-validation-mcp-integration.md +32 -81
- package/assets/skills/agentic-quality-engineering/SKILL.md +31 -60
- package/assets/skills/pair-programming/SKILL.md +2 -2
- package/assets/skills/performance-testing/SKILL.md +1 -1
- package/assets/skills/qcsd-cicd-swarm/steps/01-flag-detection.md +2 -2
- package/assets/skills/qcsd-cicd-swarm/steps/07-learning-persistence.md +6 -6
- package/assets/skills/qcsd-development-swarm/steps/01-flag-detection.md +2 -2
- package/assets/skills/qcsd-development-swarm/steps/07-learning-persistence.md +6 -6
- package/assets/skills/qcsd-ideation-swarm/steps/07-learning-persistence.md +6 -6
- package/assets/skills/qcsd-production-swarm/steps/01-flag-detection.md +202 -206
- package/assets/skills/qcsd-production-swarm/steps/07-learning-persistence.md +157 -185
- package/assets/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +87 -91
- package/assets/skills/qcsd-refinement-swarm/steps/07-learning-persistence.md +49 -53
- package/assets/skills/qe-chaos-resilience/SKILL.md +2 -2
- package/assets/skills/qe-code-intelligence/SKILL.md +2 -2
- package/assets/skills/qe-coverage-analysis/SKILL.md +2 -2
- package/assets/skills/qe-defect-intelligence/SKILL.md +2 -2
- package/assets/skills/qe-iterative-loop/SKILL.md +12 -12
- package/assets/skills/qe-learning-optimization/SKILL.md +2 -2
- package/assets/skills/qe-quality-assessment/SKILL.md +2 -2
- package/assets/skills/qe-requirements-validation/SKILL.md +2 -2
- package/assets/skills/qe-test-execution/SKILL.md +2 -2
- package/assets/skills/qe-test-generation/SKILL.md +2 -2
- package/assets/skills/qe-visual-accessibility/SKILL.md +2 -2
- package/assets/skills/quality-metrics/SKILL.md +1 -1
- package/assets/skills/security-testing/SKILL.md +1 -1
- package/assets/skills/validation-pipeline/SKILL.md +2 -2
- package/assets/skills/verification-quality/SKILL.md +2 -2
- package/dist/cli/bundle.js +5169 -4631
- package/dist/cli/commands/init.js +2 -0
- package/dist/cli/commands/memory.d.ts +11 -0
- package/dist/cli/commands/memory.js +333 -0
- package/dist/cli/commands/ruvector-commands.js +41 -1
- package/dist/cli/handlers/init-handler.d.ts +1 -0
- package/dist/cli/handlers/init-handler.js +18 -6
- package/dist/cli/index.js +2 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.js +3 -0
- package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +72 -4
- package/dist/domains/coverage-analysis/services/coverage-parser.js +559 -6
- package/dist/governance/proof-envelope-integration.js +10 -4
- package/dist/init/phases/08-mcp.js +10 -0
- package/dist/init/phases/phase-interface.d.ts +2 -0
- package/dist/integrations/coherence/engines/witness-adapter.d.ts +5 -5
- package/dist/integrations/coherence/engines/witness-adapter.js +10 -22
- package/dist/integrations/ruvector/coherence-gate.d.ts +14 -5
- package/dist/integrations/ruvector/coherence-gate.js +34 -6
- package/dist/learning/agent-routing.d.ts +7 -2
- package/dist/learning/agent-routing.js +17 -1
- package/dist/mcp/bundle.js +1087 -1086
- package/dist/mcp/tools/coverage-analysis/index.d.ts +12 -0
- package/dist/mcp/tools/coverage-analysis/index.js +27 -4
- package/dist/shared/parsers/multi-language-parser.d.ts +4 -1
- package/dist/shared/parsers/multi-language-parser.js +73 -1
- package/dist/shared/parsers/tree-sitter-wasm-parser.d.ts +32 -0
- package/dist/shared/parsers/tree-sitter-wasm-parser.js +1034 -0
- package/package.json +2 -1
|
@@ -17,6 +17,10 @@ export interface CoverageAnalyzeParams {
|
|
|
17
17
|
includeRiskScoring?: boolean;
|
|
18
18
|
mlPowered?: boolean;
|
|
19
19
|
dryRun?: boolean;
|
|
20
|
+
/** Source language hint (java, csharp, go, rust, kotlin, swift, dart) */
|
|
21
|
+
language?: string;
|
|
22
|
+
/** Coverage format hint (lcov, json, jacoco, dotcover, tarpaulin, gocover, kover, xcresult) */
|
|
23
|
+
coverageFormat?: string;
|
|
20
24
|
[key: string]: unknown;
|
|
21
25
|
}
|
|
22
26
|
export interface CoverageThresholds {
|
|
@@ -31,6 +35,10 @@ export interface CoverageAnalyzeResult {
|
|
|
31
35
|
thresholdsPassed: boolean;
|
|
32
36
|
riskScore?: number;
|
|
33
37
|
trends?: CoverageTrend;
|
|
38
|
+
/** Detected or specified source language */
|
|
39
|
+
language?: string;
|
|
40
|
+
/** Coverage format used for parsing */
|
|
41
|
+
format?: string;
|
|
34
42
|
}
|
|
35
43
|
export interface CoverageSummary {
|
|
36
44
|
lines: CoverageMetric;
|
|
@@ -65,6 +73,10 @@ export interface CoverageGapsParams {
|
|
|
65
73
|
limit?: number;
|
|
66
74
|
prioritization?: 'complexity' | 'criticality' | 'change-frequency' | 'ml-confidence';
|
|
67
75
|
includeGhost?: boolean;
|
|
76
|
+
/** Source language filter */
|
|
77
|
+
language?: string;
|
|
78
|
+
/** Coverage format hint */
|
|
79
|
+
coverageFormat?: string;
|
|
68
80
|
[key: string]: unknown;
|
|
69
81
|
}
|
|
70
82
|
export interface CoverageGapsResult {
|
|
@@ -89,7 +89,7 @@ export class CoverageAnalyzeTool extends MCPToolBase {
|
|
|
89
89
|
return this.analyzerService;
|
|
90
90
|
}
|
|
91
91
|
async execute(params, context) {
|
|
92
|
-
const { target = '.', coverageFile, thresholds = { lines: 80, branches: 70, functions: 80, statements: 80 }, includeRisk = false, includeRiskScoring = false, dryRun = false, } = params;
|
|
92
|
+
const { target = '.', coverageFile, thresholds = { lines: 80, branches: 70, functions: 80, statements: 80 }, includeRisk = false, includeRiskScoring = false, dryRun = false, coverageFormat, language, } = params;
|
|
93
93
|
const shouldIncludeRisk = includeRisk || includeRiskScoring;
|
|
94
94
|
try {
|
|
95
95
|
this.emitStream(context, {
|
|
@@ -108,7 +108,7 @@ export class CoverageAnalyzeTool extends MCPToolBase {
|
|
|
108
108
|
let parsedReport = null;
|
|
109
109
|
if (coverageFile) {
|
|
110
110
|
try {
|
|
111
|
-
parsedReport = await parseCoverage(coverageFile, target);
|
|
111
|
+
parsedReport = await parseCoverage(coverageFile, target, coverageFormat, language);
|
|
112
112
|
}
|
|
113
113
|
catch (parseError) {
|
|
114
114
|
// Return error - don't silently fall back to fake data
|
|
@@ -207,6 +207,9 @@ export class CoverageAnalyzeTool extends MCPToolBase {
|
|
|
207
207
|
message: `Coverage analysis complete: ${summary.lines.percentage}% lines covered`,
|
|
208
208
|
progress: 100,
|
|
209
209
|
});
|
|
210
|
+
// Resolve language: explicit param > detected from report > undefined
|
|
211
|
+
const detectedLanguage = params.language || parsedReport.language;
|
|
212
|
+
const detectedFormat = parsedReport.format;
|
|
210
213
|
return {
|
|
211
214
|
success: true,
|
|
212
215
|
data: {
|
|
@@ -215,6 +218,8 @@ export class CoverageAnalyzeTool extends MCPToolBase {
|
|
|
215
218
|
thresholdsPassed,
|
|
216
219
|
riskScore,
|
|
217
220
|
trends,
|
|
221
|
+
language: detectedLanguage,
|
|
222
|
+
format: detectedFormat,
|
|
218
223
|
},
|
|
219
224
|
};
|
|
220
225
|
}
|
|
@@ -297,7 +302,7 @@ export class CoverageGapsTool extends MCPToolBase {
|
|
|
297
302
|
return this.gapService;
|
|
298
303
|
}
|
|
299
304
|
async execute(params, context) {
|
|
300
|
-
const { target = '.', coverageFile, minRisk = 0.3, limit = 20, prioritization = 'complexity', } = params;
|
|
305
|
+
const { target = '.', coverageFile, minRisk = 0.3, limit = 20, prioritization = 'complexity', coverageFormat, language, } = params;
|
|
301
306
|
try {
|
|
302
307
|
this.emitStream(context, {
|
|
303
308
|
status: 'detecting',
|
|
@@ -310,7 +315,7 @@ export class CoverageGapsTool extends MCPToolBase {
|
|
|
310
315
|
let parsedReport = null;
|
|
311
316
|
if (coverageFile) {
|
|
312
317
|
try {
|
|
313
|
-
parsedReport = await parseCoverage(coverageFile, target);
|
|
318
|
+
parsedReport = await parseCoverage(coverageFile, target, coverageFormat, language);
|
|
314
319
|
}
|
|
315
320
|
catch (parseError) {
|
|
316
321
|
return {
|
|
@@ -527,6 +532,15 @@ const COVERAGE_ANALYZE_SCHEMA = {
|
|
|
527
532
|
description: 'Use ML-powered analysis (vector similarity)',
|
|
528
533
|
default: false,
|
|
529
534
|
},
|
|
535
|
+
language: {
|
|
536
|
+
type: 'string',
|
|
537
|
+
description: 'Source language hint (java, csharp, go, rust, kotlin, swift, dart, typescript, python)',
|
|
538
|
+
},
|
|
539
|
+
coverageFormat: {
|
|
540
|
+
type: 'string',
|
|
541
|
+
description: 'Coverage format hint',
|
|
542
|
+
enum: ['lcov', 'json', 'jacoco', 'dotcover', 'tarpaulin', 'gocover', 'kover', 'xcresult'],
|
|
543
|
+
},
|
|
530
544
|
},
|
|
531
545
|
};
|
|
532
546
|
const COVERAGE_GAPS_SCHEMA = {
|
|
@@ -566,6 +580,15 @@ const COVERAGE_GAPS_SCHEMA = {
|
|
|
566
580
|
description: 'Include ADR-059 ghost intent coverage analysis (detect untested behavioral intents)',
|
|
567
581
|
default: false,
|
|
568
582
|
},
|
|
583
|
+
language: {
|
|
584
|
+
type: 'string',
|
|
585
|
+
description: 'Source language filter (java, csharp, go, rust, kotlin, swift, dart)',
|
|
586
|
+
},
|
|
587
|
+
coverageFormat: {
|
|
588
|
+
type: 'string',
|
|
589
|
+
description: 'Coverage format hint',
|
|
590
|
+
enum: ['lcov', 'json', 'jacoco', 'dotcover', 'tarpaulin', 'gocover', 'kover', 'xcresult'],
|
|
591
|
+
},
|
|
569
592
|
},
|
|
570
593
|
};
|
|
571
594
|
//# sourceMappingURL=index.js.map
|
|
@@ -128,11 +128,14 @@ declare class DartParser implements ILanguageParser {
|
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
130
|
* Registry of all language parsers.
|
|
131
|
-
*
|
|
131
|
+
* For Python, Java, C#, Rust, Swift: tries WASM parser first, falls back to regex.
|
|
132
|
+
* For Go, Kotlin, Dart: uses regex parser directly.
|
|
132
133
|
*/
|
|
133
134
|
export declare class TreeSitterParserRegistry {
|
|
134
135
|
private parsers;
|
|
136
|
+
private _wasmInitPromise;
|
|
135
137
|
constructor();
|
|
138
|
+
private _tryLoadWasmParsers;
|
|
136
139
|
register(parser: ILanguageParser): void;
|
|
137
140
|
getParser(language: SupportedLanguage): ILanguageParser | undefined;
|
|
138
141
|
parseFile(content: string, filePath: string, language: SupportedLanguage): Promise<ParsedFile | undefined>;
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* 1. joinMultiLineSignatures — collapses multi-line function/class declarations into single logical lines
|
|
8
8
|
* 2. matchBalancedBrackets — handles nested generics like Map<String, List<Foo>> correctly
|
|
9
9
|
*/
|
|
10
|
+
import { createLogger } from '../../logging/logger-factory.js';
|
|
10
11
|
// ============================================================================
|
|
11
12
|
// Shared Parsing Utilities
|
|
12
13
|
// ============================================================================
|
|
@@ -1230,13 +1231,53 @@ class DartParser {
|
|
|
1230
1231
|
// ============================================================================
|
|
1231
1232
|
// Parser Registry
|
|
1232
1233
|
// ============================================================================
|
|
1234
|
+
const registryLogger = createLogger('ParserRegistry');
|
|
1235
|
+
/** Languages that have WASM parser support */
|
|
1236
|
+
const WASM_SUPPORTED_LANGUAGES = ['python', 'java', 'csharp', 'rust', 'swift'];
|
|
1237
|
+
/**
|
|
1238
|
+
* Wraps a WASM parser with automatic fallback to a regex parser.
|
|
1239
|
+
* Logs a user-facing warning when fallback occurs.
|
|
1240
|
+
*/
|
|
1241
|
+
class FallbackParser {
|
|
1242
|
+
language;
|
|
1243
|
+
supportedExtensions;
|
|
1244
|
+
wasmParser;
|
|
1245
|
+
regexParser;
|
|
1246
|
+
wasmFailCount = 0;
|
|
1247
|
+
static MAX_WASM_RETRIES = 3;
|
|
1248
|
+
constructor(wasmParser, regexParser) {
|
|
1249
|
+
this.wasmParser = wasmParser;
|
|
1250
|
+
this.regexParser = regexParser;
|
|
1251
|
+
this.language = wasmParser.language;
|
|
1252
|
+
this.supportedExtensions = wasmParser.supportedExtensions;
|
|
1253
|
+
}
|
|
1254
|
+
async parseFile(content, filePath) {
|
|
1255
|
+
if (this.wasmFailCount < FallbackParser.MAX_WASM_RETRIES) {
|
|
1256
|
+
try {
|
|
1257
|
+
return await this.wasmParser.parseFile(content, filePath);
|
|
1258
|
+
}
|
|
1259
|
+
catch (err) {
|
|
1260
|
+
this.wasmFailCount++;
|
|
1261
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1262
|
+
const permanent = this.wasmFailCount >= FallbackParser.MAX_WASM_RETRIES;
|
|
1263
|
+
registryLogger.warn(`[${this.language}] tree-sitter WASM parser failed (attempt ${this.wasmFailCount}/${FallbackParser.MAX_WASM_RETRIES}): ${msg}. ` +
|
|
1264
|
+
`Falling back to regex parser (~97-98% accuracy). ` +
|
|
1265
|
+
(permanent ? 'Set AQE_PARSER_REGEX_ONLY=1 to silence this warning.' : 'Will retry WASM on next parse.'));
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
return this.regexParser.parseFile(content, filePath);
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1233
1271
|
/**
|
|
1234
1272
|
* Registry of all language parsers.
|
|
1235
|
-
*
|
|
1273
|
+
* For Python, Java, C#, Rust, Swift: tries WASM parser first, falls back to regex.
|
|
1274
|
+
* For Go, Kotlin, Dart: uses regex parser directly.
|
|
1236
1275
|
*/
|
|
1237
1276
|
export class TreeSitterParserRegistry {
|
|
1238
1277
|
parsers = new Map();
|
|
1278
|
+
_wasmInitPromise = null;
|
|
1239
1279
|
constructor() {
|
|
1280
|
+
// Register regex parsers for all 8 languages immediately
|
|
1240
1281
|
this.register(new PythonParser());
|
|
1241
1282
|
this.register(new JavaParser());
|
|
1242
1283
|
this.register(new CSharpParser());
|
|
@@ -1245,6 +1286,31 @@ export class TreeSitterParserRegistry {
|
|
|
1245
1286
|
this.register(new SwiftParser());
|
|
1246
1287
|
this.register(new KotlinParser());
|
|
1247
1288
|
this.register(new DartParser());
|
|
1289
|
+
// Kick off async WASM parser loading (non-blocking)
|
|
1290
|
+
this._wasmInitPromise = this._tryLoadWasmParsers();
|
|
1291
|
+
}
|
|
1292
|
+
async _tryLoadWasmParsers() {
|
|
1293
|
+
try {
|
|
1294
|
+
const mod = await import('./tree-sitter-wasm-parser.js');
|
|
1295
|
+
if (!mod.isWasmAvailable()) {
|
|
1296
|
+
registryLogger.info('tree-sitter WASM parsers disabled or unavailable. Using regex parsers (~97-98% accuracy). ' +
|
|
1297
|
+
'Set AQE_PARSER_REGEX_ONLY=0 or ensure web-tree-sitter is installed to enable WASM.');
|
|
1298
|
+
return;
|
|
1299
|
+
}
|
|
1300
|
+
const wasmParsers = mod.createWasmParsers();
|
|
1301
|
+
// Wrap each WASM parser with fallback to the existing regex parser
|
|
1302
|
+
for (const lang of WASM_SUPPORTED_LANGUAGES) {
|
|
1303
|
+
const wasmParser = wasmParsers.get(lang);
|
|
1304
|
+
const regexParser = this.parsers.get(lang);
|
|
1305
|
+
if (wasmParser && regexParser) {
|
|
1306
|
+
this.parsers.set(lang, new FallbackParser(wasmParser, regexParser));
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
registryLogger.info('tree-sitter WASM parsers available for: ' + WASM_SUPPORTED_LANGUAGES.join(', '));
|
|
1310
|
+
}
|
|
1311
|
+
catch {
|
|
1312
|
+
registryLogger.info('tree-sitter WASM parser module not available. Using regex parsers for all languages.');
|
|
1313
|
+
}
|
|
1248
1314
|
}
|
|
1249
1315
|
register(parser) {
|
|
1250
1316
|
this.parsers.set(parser.language, parser);
|
|
@@ -1253,6 +1319,12 @@ export class TreeSitterParserRegistry {
|
|
|
1253
1319
|
return this.parsers.get(language);
|
|
1254
1320
|
}
|
|
1255
1321
|
async parseFile(content, filePath, language) {
|
|
1322
|
+
// Ensure WASM init has completed (or failed) before first parse.
|
|
1323
|
+
// After the first call, the promise is already resolved so this is a no-op.
|
|
1324
|
+
if (this._wasmInitPromise) {
|
|
1325
|
+
await this._wasmInitPromise;
|
|
1326
|
+
this._wasmInitPromise = null;
|
|
1327
|
+
}
|
|
1256
1328
|
const parser = this.parsers.get(language);
|
|
1257
1329
|
if (!parser)
|
|
1258
1330
|
return undefined;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tree-sitter WASM Parser (ADR-076 Amendment 2026-03-24)
|
|
3
|
+
*
|
|
4
|
+
* Provides AST-based parsing for Python, Java, C#, Rust, Swift using
|
|
5
|
+
* web-tree-sitter WASM grammars. Achieves ~100% accuracy for identifying
|
|
6
|
+
* functions, classes, imports, properties, and complexity — eliminating
|
|
7
|
+
* the ~2-3% edge cases (code in strings, complex generics) that regex misses.
|
|
8
|
+
*
|
|
9
|
+
* Lazy-loads WASM grammars on first parse per language.
|
|
10
|
+
* Falls back to regex parsers with user-facing log warnings when WASM
|
|
11
|
+
* initialization fails (missing dependency, incompatible Node version, etc.).
|
|
12
|
+
*/
|
|
13
|
+
import type { SupportedLanguage } from '../types/test-frameworks.js';
|
|
14
|
+
import type { ILanguageParser, ParsedFile } from './interfaces.js';
|
|
15
|
+
export declare class TreeSitterWASMParser implements ILanguageParser {
|
|
16
|
+
readonly language: SupportedLanguage;
|
|
17
|
+
readonly supportedExtensions: string[];
|
|
18
|
+
constructor(language: SupportedLanguage, extensions: string[]);
|
|
19
|
+
parseFile(content: string, filePath: string): Promise<ParsedFile>;
|
|
20
|
+
private extractFromAST;
|
|
21
|
+
}
|
|
22
|
+
export declare function createWasmParsers(): Map<SupportedLanguage, ILanguageParser>;
|
|
23
|
+
/**
|
|
24
|
+
* Check if web-tree-sitter WASM is available in this environment.
|
|
25
|
+
* Returns true if the dependency is installed; does NOT initialize WASM.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isWasmAvailable(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Reset internal state — for testing only.
|
|
30
|
+
*/
|
|
31
|
+
export declare function _resetWasmState(): void;
|
|
32
|
+
//# sourceMappingURL=tree-sitter-wasm-parser.d.ts.map
|