agentic-qe 3.8.4 → 3.8.5
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/CHANGELOG.md +12 -0
- package/dist/cli/bundle.js +694 -694
- package/dist/cli/commands/hooks-handlers/command-hooks.d.ts +12 -0
- package/dist/cli/commands/hooks-handlers/command-hooks.js +253 -0
- package/dist/cli/commands/hooks-handlers/editing-hooks.d.ts +12 -0
- package/dist/cli/commands/hooks-handlers/editing-hooks.js +161 -0
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.d.ts +57 -0
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +263 -0
- package/dist/cli/commands/hooks-handlers/hooks-shared.d.ts +52 -0
- package/dist/cli/commands/hooks-handlers/hooks-shared.js +223 -0
- package/dist/cli/commands/hooks-handlers/routing-hooks.d.ts +12 -0
- package/dist/cli/commands/hooks-handlers/routing-hooks.js +107 -0
- package/dist/cli/commands/hooks-handlers/session-hooks.d.ts +12 -0
- package/dist/cli/commands/hooks-handlers/session-hooks.js +171 -0
- package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +12 -0
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +248 -0
- package/dist/cli/commands/hooks-handlers/task-hooks.d.ts +12 -0
- package/dist/cli/commands/hooks-handlers/task-hooks.js +152 -0
- package/dist/cli/commands/hooks.d.ts +3 -23
- package/dist/cli/commands/hooks.js +16 -1459
- package/dist/domains/base-domain-coordinator.d.ts +0 -15
- package/dist/domains/base-domain-coordinator.js +7 -5
- package/dist/domains/chaos-resilience/coordinator.d.ts +0 -4
- package/dist/domains/chaos-resilience/coordinator.js +24 -22
- package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +0 -4
- package/dist/domains/chaos-resilience/services/chaos-engineer.js +47 -45
- package/dist/domains/chaos-resilience/services/performance-profiler.d.ts +0 -4
- package/dist/domains/chaos-resilience/services/performance-profiler.js +10 -8
- package/dist/domains/code-intelligence/coordinator-consensus.d.ts +0 -3
- package/dist/domains/code-intelligence/coordinator-consensus.js +8 -6
- package/dist/domains/code-intelligence/coordinator-gnn.d.ts +0 -3
- package/dist/domains/code-intelligence/coordinator-gnn.js +8 -6
- package/dist/domains/code-intelligence/coordinator-hypergraph.d.ts +0 -3
- package/dist/domains/code-intelligence/coordinator-hypergraph.js +13 -11
- package/dist/domains/code-intelligence/coordinator.d.ts +0 -3
- package/dist/domains/code-intelligence/coordinator.js +21 -19
- package/dist/domains/code-intelligence/services/c4-model/index.d.ts +0 -3
- package/dist/domains/code-intelligence/services/c4-model/index.js +5 -3
- package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +0 -6
- package/dist/domains/code-intelligence/services/knowledge-graph.js +4 -2
- package/dist/domains/code-intelligence/services/product-factors-bridge.d.ts +0 -5
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +9 -7
- package/dist/domains/contract-testing/coordinator.d.ts +0 -6
- package/dist/domains/contract-testing/coordinator.js +25 -23
- package/dist/domains/contract-testing/services/contract-validator.d.ts +0 -4
- package/dist/domains/contract-testing/services/contract-validator.js +4 -2
- package/dist/domains/contract-testing/services/schema-validator.js +1 -1
- package/dist/domains/coverage-analysis/coordinator.js +13 -11
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +4 -2
- package/dist/domains/coverage-analysis/services/gap-detector.js +3 -1
- package/dist/domains/coverage-analysis/services/hnsw-index.d.ts +0 -15
- package/dist/domains/coverage-analysis/services/hnsw-index.js +3 -1
- package/dist/domains/coverage-analysis/services/sublinear-analyzer.d.ts +0 -26
- package/dist/domains/coverage-analysis/services/sublinear-analyzer.js +3 -1
- package/dist/domains/defect-intelligence/coordinator.d.ts +1 -10
- package/dist/domains/defect-intelligence/coordinator.js +5 -3
- package/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.d.ts +0 -6
- package/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.js +3 -1
- package/dist/domains/defect-intelligence/services/defect-predictor.d.ts +0 -6
- package/dist/domains/defect-intelligence/services/defect-predictor.js +5 -3
- package/dist/domains/defect-intelligence/services/pattern-learner.d.ts +0 -4
- package/dist/domains/defect-intelligence/services/pattern-learner.js +3 -1
- package/dist/domains/defect-intelligence/services/root-cause-analyzer.d.ts +0 -6
- package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +3 -1
- package/dist/domains/enterprise-integration/coordinator.js +6 -4
- package/dist/domains/learning-optimization/coordinator-consensus.d.ts +0 -3
- package/dist/domains/learning-optimization/coordinator-consensus.js +8 -6
- package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
- package/dist/domains/learning-optimization/coordinator.js +15 -13
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +0 -4
- package/dist/domains/learning-optimization/services/learning-coordinator.js +4 -2
- package/dist/domains/quality-assessment/coordinator-claim-verifier.d.ts +0 -3
- package/dist/domains/quality-assessment/coordinator-claim-verifier.js +6 -4
- package/dist/domains/quality-assessment/coordinator-gate-evaluation.d.ts +0 -4
- package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +9 -7
- package/dist/domains/quality-assessment/coordinator-rl-integration.d.ts +0 -3
- package/dist/domains/quality-assessment/coordinator-rl-integration.js +10 -8
- package/dist/domains/quality-assessment/coordinator.d.ts +0 -15
- package/dist/domains/quality-assessment/coordinator.js +14 -12
- package/dist/domains/quality-assessment/services/deployment-advisor.d.ts +0 -10
- package/dist/domains/quality-assessment/services/deployment-advisor.js +4 -2
- package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +0 -6
- package/dist/domains/quality-assessment/services/quality-analyzer.js +4 -2
- package/dist/domains/requirements-validation/coordinator.d.ts +0 -3
- package/dist/domains/requirements-validation/coordinator.js +15 -13
- package/dist/domains/requirements-validation/services/product-factors-assessment/code-intelligence/codebase-analyzer.d.ts +0 -5
- package/dist/domains/requirements-validation/services/product-factors-assessment/code-intelligence/codebase-analyzer.js +15 -13
- package/dist/domains/requirements-validation/services/product-factors-assessment/product-factors-service.d.ts +0 -6
- package/dist/domains/requirements-validation/services/product-factors-assessment/product-factors-service.js +9 -7
- package/dist/domains/requirements-validation/services/requirements-validator.d.ts +0 -6
- package/dist/domains/requirements-validation/services/requirements-validator.js +4 -2
- package/dist/domains/security-compliance/coordinator.js +24 -22
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +0 -21
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +4 -2
- package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +0 -4
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +3 -1
- package/dist/domains/security-compliance/services/security-auditor-dast.d.ts +0 -4
- package/dist/domains/security-compliance/services/security-auditor-dast.js +3 -1
- package/dist/domains/security-compliance/services/security-auditor-sast.d.ts +0 -3
- package/dist/domains/security-compliance/services/security-auditor-sast.js +3 -1
- package/dist/domains/security-compliance/services/security-auditor-secrets.d.ts +0 -3
- package/dist/domains/security-compliance/services/security-auditor-secrets.js +3 -1
- package/dist/domains/security-compliance/services/security-auditor.js +11 -9
- package/dist/domains/test-execution/coordinator.js +11 -9
- package/dist/domains/test-execution/services/auth-state-manager.d.ts +0 -3
- package/dist/domains/test-execution/services/auth-state-manager.js +4 -2
- package/dist/domains/test-execution/services/e2e/e2e-coordinator.d.ts +0 -14
- package/dist/domains/test-execution/services/e2e/e2e-coordinator.js +3 -1
- package/dist/domains/test-execution/services/flaky-detector.js +4 -2
- package/dist/domains/test-execution/services/retry-handler.js +3 -1
- package/dist/domains/test-execution/services/test-executor.js +3 -1
- package/dist/domains/test-generation/coordinator.d.ts +0 -17
- package/dist/domains/test-generation/coordinator.js +33 -31
- package/dist/domains/test-generation/pattern-injection/edge-case-injector.d.ts +0 -5
- package/dist/domains/test-generation/pattern-injection/edge-case-injector.js +3 -1
- package/dist/domains/test-generation/services/code-transform-integration.d.ts +0 -7
- package/dist/domains/test-generation/services/code-transform-integration.js +3 -1
- package/dist/domains/test-generation/services/coherence-gate-service.d.ts +0 -3
- package/dist/domains/test-generation/services/coherence-gate-service.js +3 -1
- package/dist/domains/test-generation/services/test-generator.d.ts +0 -8
- package/dist/domains/test-generation/services/test-generator.js +5 -3
- package/dist/domains/visual-accessibility/coordinator.d.ts +0 -3
- package/dist/domains/visual-accessibility/coordinator.js +14 -12
- package/dist/domains/visual-accessibility/services/accessibility-tester-browser.d.ts +0 -3
- package/dist/domains/visual-accessibility/services/accessibility-tester-browser.js +52 -50
- package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +0 -4
- package/dist/domains/visual-accessibility/services/accessibility-tester.js +8 -6
- package/dist/domains/visual-accessibility/services/axe-core-integration.d.ts +0 -3
- package/dist/domains/visual-accessibility/services/axe-core-integration.js +20 -18
- package/dist/domains/visual-accessibility/services/browser-security-scanner.d.ts +0 -4
- package/dist/domains/visual-accessibility/services/browser-security-scanner.js +6 -4
- package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.d.ts +0 -30
- package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.js +5 -3
- package/dist/domains/visual-accessibility/services/viewport-capture.d.ts +0 -27
- package/dist/domains/visual-accessibility/services/viewport-capture.js +6 -4
- package/dist/domains/visual-accessibility/services/visual-regression.d.ts +0 -26
- package/dist/domains/visual-accessibility/services/visual-regression.js +4 -2
- package/dist/domains/visual-accessibility/services/visual-tester.d.ts +0 -4
- package/dist/domains/visual-accessibility/services/visual-tester.js +4 -2
- package/dist/governance/deterministic-gateway-integration.js +1 -1
- package/dist/mcp/bundle.js +335 -335
- package/dist/mcp/security/validators/command-validator.d.ts +1 -40
- package/dist/mcp/security/validators/command-validator.js +2 -122
- package/dist/mcp/security/validators/crypto-validator.d.ts +1 -39
- package/dist/mcp/security/validators/crypto-validator.js +2 -71
- package/dist/mcp/security/validators/input-sanitizer.d.ts +1 -55
- package/dist/mcp/security/validators/input-sanitizer.js +2 -156
- package/dist/mcp/security/validators/interfaces.d.ts +1 -163
- package/dist/mcp/security/validators/interfaces.js +2 -5
- package/dist/mcp/security/validators/path-traversal-validator.d.ts +1 -49
- package/dist/mcp/security/validators/path-traversal-validator.js +2 -241
- package/dist/mcp/security/validators/regex-safety-validator.d.ts +1 -49
- package/dist/mcp/security/validators/regex-safety-validator.js +2 -182
- package/dist/mcp/security/validators/validation-orchestrator.d.ts +1 -65
- package/dist/mcp/security/validators/validation-orchestrator.js +2 -145
- package/dist/shared/io/file-reader.js +1 -1
- package/dist/shared/security/command-validator.d.ts +44 -0
- package/dist/shared/security/command-validator.js +126 -0
- package/dist/shared/security/crypto-validator.d.ts +43 -0
- package/dist/shared/security/crypto-validator.js +75 -0
- package/dist/shared/security/index.d.ts +7 -0
- package/dist/shared/security/index.js +15 -0
- package/dist/shared/security/input-sanitizer.d.ts +59 -0
- package/dist/shared/security/input-sanitizer.js +160 -0
- package/dist/shared/security/path-traversal-validator.d.ts +53 -0
- package/dist/shared/security/path-traversal-validator.js +245 -0
- package/dist/shared/security/regex-safety-validator.d.ts +53 -0
- package/dist/shared/security/regex-safety-validator.js +186 -0
- package/dist/shared/security/validation-orchestrator.d.ts +69 -0
- package/dist/shared/security/validation-orchestrator.js +149 -0
- package/dist/shared/security/validators-interfaces.d.ts +167 -0
- package/dist/shared/security/validators-interfaces.js +9 -0
- package/package.json +1 -1
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Event-driven architecture following V3 patterns.
|
|
13
13
|
*/
|
|
14
|
+
import { LoggerFactory } from '../../../logging/index.js';
|
|
14
15
|
import { v4 as uuidv4 } from 'uuid';
|
|
15
16
|
import * as path from 'path';
|
|
16
17
|
import * as fs from 'fs/promises';
|
|
@@ -88,6 +89,7 @@ const EXTERNAL_SYSTEM_PATTERNS = {
|
|
|
88
89
|
*
|
|
89
90
|
* Bridges code-intelligence C4 capabilities with product-factors-assessor.
|
|
90
91
|
*/
|
|
92
|
+
const logger = LoggerFactory.create('code-intelligence/product-factors-bridge');
|
|
91
93
|
export class ProductFactorsBridgeService {
|
|
92
94
|
eventBus;
|
|
93
95
|
memory;
|
|
@@ -130,14 +132,14 @@ export class ProductFactorsBridgeService {
|
|
|
130
132
|
}
|
|
131
133
|
async handleKnowledgeGraphUpdated(event) {
|
|
132
134
|
// Invalidate relevant caches when knowledge graph is updated
|
|
133
|
-
|
|
135
|
+
logger.info('[ProductFactorsBridge] Knowledge graph updated, considering cache invalidation');
|
|
134
136
|
// Note: We don't have project path in this event, so we rely on hash-based invalidation
|
|
135
137
|
}
|
|
136
138
|
async handleImpactAnalysisCompleted(event) {
|
|
137
139
|
// Track impacted files for potential cache invalidation
|
|
138
140
|
const payload = event.payload;
|
|
139
141
|
if (payload.changedFiles && payload.changedFiles.length > 0) {
|
|
140
|
-
|
|
142
|
+
logger.info(`[ProductFactorsBridge] Impact analysis detected ${payload.changedFiles.length} changed files`);
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
145
|
// ==========================================================================
|
|
@@ -150,7 +152,7 @@ export class ProductFactorsBridgeService {
|
|
|
150
152
|
// Check cache first
|
|
151
153
|
const cached = await this.getCachedDiagrams(request.projectPath);
|
|
152
154
|
if (cached) {
|
|
153
|
-
|
|
155
|
+
logger.info(`[ProductFactorsBridge] Returning cached C4 diagrams for ${request.projectPath}`);
|
|
154
156
|
return ok(cached);
|
|
155
157
|
}
|
|
156
158
|
// Generate new diagrams
|
|
@@ -369,7 +371,7 @@ export class ProductFactorsBridgeService {
|
|
|
369
371
|
}
|
|
370
372
|
}
|
|
371
373
|
catch (error) {
|
|
372
|
-
|
|
374
|
+
logger.error('External system detection failed', error instanceof Error ? error : undefined);
|
|
373
375
|
}
|
|
374
376
|
return systems;
|
|
375
377
|
}
|
|
@@ -435,7 +437,7 @@ export class ProductFactorsBridgeService {
|
|
|
435
437
|
}
|
|
436
438
|
}
|
|
437
439
|
catch (error) {
|
|
438
|
-
|
|
440
|
+
logger.error('Component analysis failed:', error instanceof Error ? error : undefined);
|
|
439
441
|
}
|
|
440
442
|
return { components, relationships };
|
|
441
443
|
}
|
|
@@ -473,7 +475,7 @@ export class ProductFactorsBridgeService {
|
|
|
473
475
|
}
|
|
474
476
|
catch (error) {
|
|
475
477
|
// Non-critical: permission errors when scanning directories
|
|
476
|
-
|
|
478
|
+
logger.debug('Directory scan error:');
|
|
477
479
|
}
|
|
478
480
|
};
|
|
479
481
|
await scan(dir, 0);
|
|
@@ -573,7 +575,7 @@ export class ProductFactorsBridgeService {
|
|
|
573
575
|
}
|
|
574
576
|
}
|
|
575
577
|
catch (error) {
|
|
576
|
-
|
|
578
|
+
logger.error('Coupling analysis failed:', error instanceof Error ? error : undefined);
|
|
577
579
|
}
|
|
578
580
|
return couplingInfo;
|
|
579
581
|
}
|
|
@@ -41,12 +41,6 @@ export interface CoordinatorConfig extends BaseDomainCoordinatorConfig {
|
|
|
41
41
|
enableQESONA: boolean;
|
|
42
42
|
}
|
|
43
43
|
type ContractWorkflowType = 'verify' | 'compare' | 'import' | 'export';
|
|
44
|
-
/**
|
|
45
|
-
* Contract Testing Coordinator
|
|
46
|
-
* Orchestrates contract testing workflows and coordinates with agents
|
|
47
|
-
*
|
|
48
|
-
* CQ-002: Extends BaseDomainCoordinator
|
|
49
|
-
*/
|
|
50
44
|
export declare class ContractTestingCoordinator extends BaseDomainCoordinator<CoordinatorConfig, ContractWorkflowType> implements IContractTestingCoordinator {
|
|
51
45
|
private readonly memory;
|
|
52
46
|
private readonly agentCoordinator;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* CQ-002: Extends BaseDomainCoordinator for lifecycle deduplication
|
|
6
6
|
*/
|
|
7
|
+
import { LoggerFactory } from '../../logging/index.js';
|
|
7
8
|
import { v4 as uuidv4 } from 'uuid';
|
|
8
9
|
import { ok, err } from '../../shared/types/index.js';
|
|
9
10
|
import { toError, toErrorMessage } from '../../shared/error-utils.js';
|
|
@@ -52,6 +53,7 @@ const DEFAULT_CONFIG = {
|
|
|
52
53
|
*
|
|
53
54
|
* CQ-002: Extends BaseDomainCoordinator
|
|
54
55
|
*/
|
|
56
|
+
const logger = LoggerFactory.create('contract-testing');
|
|
55
57
|
export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
56
58
|
memory;
|
|
57
59
|
agentCoordinator;
|
|
@@ -91,10 +93,10 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
91
93
|
hiddenLayers: [64, 64],
|
|
92
94
|
});
|
|
93
95
|
// First call to predict will initialize the algorithm
|
|
94
|
-
|
|
96
|
+
logger.info('SARSA algorithm created successfully');
|
|
95
97
|
}
|
|
96
98
|
catch (error) {
|
|
97
|
-
|
|
99
|
+
logger.error('Failed to create SARSA:', error instanceof Error ? error : undefined);
|
|
98
100
|
throw new Error(`SARSA creation failed: ${toErrorMessage(error)}`);
|
|
99
101
|
}
|
|
100
102
|
}
|
|
@@ -108,12 +110,12 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
108
110
|
maxPatterns: 5000,
|
|
109
111
|
minConfidence: 0.6,
|
|
110
112
|
});
|
|
111
|
-
|
|
113
|
+
logger.info('PersistentSONAEngine initialized successfully');
|
|
112
114
|
}
|
|
113
115
|
catch (error) {
|
|
114
116
|
// Log and continue - SONA is enhancement, not critical
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
logger.error('Failed to initialize PersistentSONAEngine:', error instanceof Error ? error : undefined);
|
|
118
|
+
logger.warn('Continuing without SONA pattern persistence');
|
|
117
119
|
this.qesona = undefined;
|
|
118
120
|
}
|
|
119
121
|
}
|
|
@@ -188,7 +190,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
188
190
|
this.startWorkflow(workflowId, 'verify');
|
|
189
191
|
// ADR-047: Check topology health before expensive operations
|
|
190
192
|
if (this.config.enableMinCutAwareness && !this.isTopologyHealthy()) {
|
|
191
|
-
|
|
193
|
+
logger.warn(`Topology degraded, using conservative verification strategy`);
|
|
192
194
|
// Continue with reduced parallelism when topology is unhealthy
|
|
193
195
|
}
|
|
194
196
|
// ADR-047: Check if operations should be paused due to critical topology
|
|
@@ -220,7 +222,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
220
222
|
const prioritizationResult = await this.prioritizeContracts(contracts, prioritizationContext);
|
|
221
223
|
if (prioritizationResult.success) {
|
|
222
224
|
contracts = prioritizationResult.value.orderedContracts;
|
|
223
|
-
|
|
225
|
+
logger.info(`[contract-testing] Using ${prioritizationResult.value.strategy} strategy for contract verification order (confidence: ${prioritizationResult.value.confidence.toFixed(2)})`);
|
|
224
226
|
}
|
|
225
227
|
}
|
|
226
228
|
// Spawn verification agent
|
|
@@ -282,7 +284,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
282
284
|
this.startWorkflow(workflowId, 'compare');
|
|
283
285
|
// ADR-047: Check topology health before expensive operations
|
|
284
286
|
if (this.config.enableMinCutAwareness && !this.isTopologyHealthy()) {
|
|
285
|
-
|
|
287
|
+
logger.warn(`Topology degraded, using conservative pre-release check`);
|
|
286
288
|
}
|
|
287
289
|
// ADR-047: Check if operations should be paused due to critical topology
|
|
288
290
|
if (this.minCutMixin.shouldPauseOperations()) {
|
|
@@ -596,14 +598,14 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
596
598
|
else if (filePath.endsWith('.yaml') || filePath.endsWith('.yml')) {
|
|
597
599
|
// YAML support would require a YAML parser
|
|
598
600
|
// For now, log a warning and return null
|
|
599
|
-
|
|
601
|
+
logger.warn('YAML contract files not yet supported:');
|
|
600
602
|
return null;
|
|
601
603
|
}
|
|
602
604
|
// Try parsing as JSON anyway
|
|
603
605
|
return safeJsonParse(content);
|
|
604
606
|
}
|
|
605
607
|
catch (error) {
|
|
606
|
-
|
|
608
|
+
logger.error(`Failed to parse contract from ${path.value}: ${toErrorMessage(error)}`);
|
|
607
609
|
return null;
|
|
608
610
|
}
|
|
609
611
|
}
|
|
@@ -611,7 +613,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
611
613
|
// Read file content using FileReader
|
|
612
614
|
const result = await this.fileReader.readFile(path.value);
|
|
613
615
|
if (!result.success) {
|
|
614
|
-
|
|
616
|
+
logger.error(`Failed to read file ${path.value}:`, result.error);
|
|
615
617
|
return null;
|
|
616
618
|
}
|
|
617
619
|
return result.value;
|
|
@@ -894,7 +896,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
894
896
|
nextState: state,
|
|
895
897
|
done: true,
|
|
896
898
|
});
|
|
897
|
-
|
|
899
|
+
logger.info(`[contract-testing] SARSA prioritized ${contracts.length} contracts using ${strategy} strategy (confidence: ${prediction.confidence.toFixed(2)})`);
|
|
898
900
|
return ok({
|
|
899
901
|
orderedContracts: prioritized,
|
|
900
902
|
strategy,
|
|
@@ -902,7 +904,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
902
904
|
});
|
|
903
905
|
}
|
|
904
906
|
catch (error) {
|
|
905
|
-
|
|
907
|
+
logger.error('SARSA prioritization failed:', error instanceof Error ? error : undefined);
|
|
906
908
|
// Return original contracts on error (graceful degradation)
|
|
907
909
|
return ok({
|
|
908
910
|
orderedContracts: contracts,
|
|
@@ -971,10 +973,10 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
971
973
|
provider: contract.provider.name,
|
|
972
974
|
version: contract.version.toString(),
|
|
973
975
|
});
|
|
974
|
-
|
|
976
|
+
logger.info(`Stored pattern for contract ${contract.id} (success: ${validationSuccess}, quality: ${quality.toFixed(2)})`);
|
|
975
977
|
}
|
|
976
978
|
catch (error) {
|
|
977
|
-
|
|
979
|
+
logger.error('Failed to store contract pattern:', error instanceof Error ? error : undefined);
|
|
978
980
|
}
|
|
979
981
|
}
|
|
980
982
|
/**
|
|
@@ -1008,7 +1010,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
1008
1010
|
if (adaptation.success && adaptation.pattern) {
|
|
1009
1011
|
const shouldValidate = adaptation.pattern.outcome.success;
|
|
1010
1012
|
const strategy = adaptation.pattern.action.type;
|
|
1011
|
-
|
|
1013
|
+
logger.info(`[contract-testing] QESONA adapted pattern for ${contract.id}: shouldValidate=${shouldValidate}, confidence=${adaptation.similarity.toFixed(2)}`);
|
|
1012
1014
|
return {
|
|
1013
1015
|
shouldValidate,
|
|
1014
1016
|
confidence: adaptation.similarity,
|
|
@@ -1022,7 +1024,7 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
1022
1024
|
};
|
|
1023
1025
|
}
|
|
1024
1026
|
catch (error) {
|
|
1025
|
-
|
|
1027
|
+
logger.error('QESONA pattern adaptation failed:', error instanceof Error ? error : undefined);
|
|
1026
1028
|
return {
|
|
1027
1029
|
shouldValidate: true,
|
|
1028
1030
|
confidence: 0.5,
|
|
@@ -1084,10 +1086,10 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
1084
1086
|
if (this.consensusMixin.requiresConsensus(finding)) {
|
|
1085
1087
|
const result = await this.consensusMixin.verifyFinding(finding);
|
|
1086
1088
|
if (result.success && result.value.verdict === 'verified') {
|
|
1087
|
-
|
|
1089
|
+
logger.info(`Contract violation verified by consensus`);
|
|
1088
1090
|
return true;
|
|
1089
1091
|
}
|
|
1090
|
-
|
|
1092
|
+
logger.warn(`Contract violation NOT verified: ${result.success ? result.value.verdict : result.error.message}`);
|
|
1091
1093
|
return false;
|
|
1092
1094
|
}
|
|
1093
1095
|
return true; // No consensus needed
|
|
@@ -1108,10 +1110,10 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
1108
1110
|
if (this.consensusMixin.requiresConsensus(finding)) {
|
|
1109
1111
|
const result = await this.consensusMixin.verifyFinding(finding);
|
|
1110
1112
|
if (result.success && result.value.verdict === 'verified') {
|
|
1111
|
-
|
|
1113
|
+
logger.info(`Breaking change at '${change.path}' verified by consensus`);
|
|
1112
1114
|
return true;
|
|
1113
1115
|
}
|
|
1114
|
-
|
|
1116
|
+
logger.warn(`Breaking change NOT verified: ${result.success ? result.value.verdict : result.error.message}`);
|
|
1115
1117
|
return false;
|
|
1116
1118
|
}
|
|
1117
1119
|
return true; // No consensus needed
|
|
@@ -1132,10 +1134,10 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
1132
1134
|
if (this.consensusMixin.requiresConsensus(finding)) {
|
|
1133
1135
|
const result = await this.consensusMixin.verifyFinding(finding);
|
|
1134
1136
|
if (result.success && result.value.verdict === 'verified') {
|
|
1135
|
-
|
|
1137
|
+
logger.info(`Schema incompatibility verified by consensus`);
|
|
1136
1138
|
return true;
|
|
1137
1139
|
}
|
|
1138
|
-
|
|
1140
|
+
logger.warn(`Schema incompatibility NOT verified: ${result.success ? result.value.verdict : result.error.message}`);
|
|
1139
1141
|
return false;
|
|
1140
1142
|
}
|
|
1141
1143
|
return true; // No consensus needed
|
|
@@ -28,10 +28,6 @@ export interface ContractValidatorDependencies {
|
|
|
28
28
|
memory: MemoryBackend;
|
|
29
29
|
llmRouter?: HybridRouter;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Contract Validation Service Implementation
|
|
33
|
-
* Validates API contracts against schemas and specifications
|
|
34
|
-
*/
|
|
35
31
|
export declare class ContractValidatorService implements IContractValidationService {
|
|
36
32
|
private readonly config;
|
|
37
33
|
private readonly memory;
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Agentic QE v3 - Contract Validator Service
|
|
3
3
|
* Implements IContractValidationService for API contract validation (Pact-style)
|
|
4
4
|
*/
|
|
5
|
+
import { LoggerFactory } from '../../../logging/index.js';
|
|
5
6
|
import { ok, err } from '../../../shared/types/index.js';
|
|
6
|
-
import { createSafeRegex } from '../../../
|
|
7
|
+
import { createSafeRegex } from '../../../shared/security/regex-safety-validator.js';
|
|
7
8
|
import { CONTRACT_CONSTANTS, LLM_ANALYSIS_CONSTANTS } from '../../constants.js';
|
|
8
9
|
import { toError } from '../../../shared/error-utils.js';
|
|
9
10
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
@@ -20,6 +21,7 @@ const DEFAULT_CONFIG = {
|
|
|
20
21
|
* Contract Validation Service Implementation
|
|
21
22
|
* Validates API contracts against schemas and specifications
|
|
22
23
|
*/
|
|
24
|
+
const logger = LoggerFactory.create('contract-testing/contract-validator');
|
|
23
25
|
export class ContractValidatorService {
|
|
24
26
|
config;
|
|
25
27
|
memory;
|
|
@@ -80,7 +82,7 @@ Provide:
|
|
|
80
82
|
return response.content;
|
|
81
83
|
}
|
|
82
84
|
catch (error) {
|
|
83
|
-
|
|
85
|
+
logger.warn('LLM analysis failed:');
|
|
84
86
|
return null;
|
|
85
87
|
}
|
|
86
88
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { v4 as uuidv4 } from 'uuid';
|
|
6
6
|
import { ok, err } from '../../../shared/types/index.js';
|
|
7
|
-
import { createSafeRegex } from '../../../
|
|
7
|
+
import { createSafeRegex } from '../../../shared/security/regex-safety-validator.js';
|
|
8
8
|
import { toError } from '../../../shared/error-utils.js';
|
|
9
9
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
10
10
|
const DEFAULT_CONFIG = {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Orchestrates coverage analysis workflow and domain events
|
|
4
4
|
* Integrates Q-Learning for intelligent test prioritization
|
|
5
5
|
*/
|
|
6
|
+
import { LoggerFactory } from '../../logging/index.js';
|
|
6
7
|
import { ok, err } from '../../shared/types';
|
|
7
8
|
import { toError } from '../../shared/error-utils.js';
|
|
8
9
|
import { createEvent, CoverageAnalysisEvents, } from '../../shared/events';
|
|
@@ -33,6 +34,7 @@ const DEFAULT_CONFIG = {
|
|
|
33
34
|
// ============================================================================
|
|
34
35
|
// Coordinator Implementation
|
|
35
36
|
// ============================================================================
|
|
37
|
+
const logger = LoggerFactory.create('coverage-analysis');
|
|
36
38
|
export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
37
39
|
memory;
|
|
38
40
|
coverageAnalyzer;
|
|
@@ -160,7 +162,7 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
160
162
|
}
|
|
161
163
|
}
|
|
162
164
|
catch (error) {
|
|
163
|
-
|
|
165
|
+
logger.error('Failed to train Q-Learning model', error instanceof Error ? error : undefined);
|
|
164
166
|
}
|
|
165
167
|
}
|
|
166
168
|
// ============================================================================
|
|
@@ -346,7 +348,7 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
346
348
|
try {
|
|
347
349
|
// ADR-047: Check topology health before expensive analysis
|
|
348
350
|
if (this.config.enableMinCutAwareness && !this.isTopologyHealthy()) {
|
|
349
|
-
|
|
351
|
+
logger.warn('Topology degraded, using conservative analysis mode');
|
|
350
352
|
}
|
|
351
353
|
// ADR-047: Check if operations should be paused due to critical topology
|
|
352
354
|
if (this.minCutMixin.shouldPauseOperations()) {
|
|
@@ -372,7 +374,7 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
372
374
|
try {
|
|
373
375
|
// ADR-047: Check topology health before gap detection
|
|
374
376
|
if (this.config.enableMinCutAwareness && !this.isTopologyHealthy()) {
|
|
375
|
-
|
|
377
|
+
logger.warn('Topology degraded, using conservative gap detection');
|
|
376
378
|
}
|
|
377
379
|
// ADR-047: Check if operations should be paused due to critical topology
|
|
378
380
|
if (this.minCutMixin.shouldPauseOperations()) {
|
|
@@ -388,7 +390,7 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
388
390
|
const confidence = Math.min(0.95, gap.riskScore / 10 + 0.3);
|
|
389
391
|
const isVerified = await this.verifyCoverageGap(gap, confidence);
|
|
390
392
|
if (!isVerified) {
|
|
391
|
-
|
|
393
|
+
logger.info(`Coverage gap in '${gap.file}' not verified, skipping publication`);
|
|
392
394
|
continue;
|
|
393
395
|
}
|
|
394
396
|
}
|
|
@@ -428,7 +430,7 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
428
430
|
factors: result.value.factors.map(f => ({ name: f.name, weight: f.contribution })),
|
|
429
431
|
}, Math.min(0.95, result.value.overallRisk / 10 + 0.5));
|
|
430
432
|
if (!isVerified) {
|
|
431
|
-
|
|
433
|
+
logger.warn(`Risk zone '${result.value.file}' not verified, downgrading severity`);
|
|
432
434
|
// Downgrade the risk level if not verified
|
|
433
435
|
return ok({
|
|
434
436
|
...result.value,
|
|
@@ -785,10 +787,10 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
785
787
|
if (this.consensusMixin.requiresConsensus(finding)) {
|
|
786
788
|
const result = await this.consensusMixin.verifyFinding(finding);
|
|
787
789
|
if (result.success && result.value.verdict === 'verified') {
|
|
788
|
-
|
|
790
|
+
logger.info(`Coverage gap in '${gap.file}' verified by consensus`);
|
|
789
791
|
return true;
|
|
790
792
|
}
|
|
791
|
-
|
|
793
|
+
logger.warn(`Coverage gap in '${gap.file}' NOT verified: ${result.success ? result.value.verdict : result.error.message}`);
|
|
792
794
|
return false;
|
|
793
795
|
}
|
|
794
796
|
return true; // No consensus needed
|
|
@@ -814,10 +816,10 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
814
816
|
if (this.consensusMixin.requiresConsensus(finding)) {
|
|
815
817
|
const result = await this.consensusMixin.verifyFinding(finding);
|
|
816
818
|
if (result.success && result.value.verdict === 'verified') {
|
|
817
|
-
|
|
819
|
+
logger.info(`Risk zone '${zone.file}' classification verified by consensus`);
|
|
818
820
|
return true;
|
|
819
821
|
}
|
|
820
|
-
|
|
822
|
+
logger.warn(`Risk zone '${zone.file}' classification NOT verified`);
|
|
821
823
|
return false;
|
|
822
824
|
}
|
|
823
825
|
return true; // No consensus needed
|
|
@@ -843,10 +845,10 @@ export class CoverageAnalysisCoordinator extends BaseDomainCoordinator {
|
|
|
843
845
|
if (this.consensusMixin.requiresConsensus(finding)) {
|
|
844
846
|
const result = await this.consensusMixin.verifyFinding(finding);
|
|
845
847
|
if (result.success && result.value.verdict === 'verified') {
|
|
846
|
-
|
|
848
|
+
logger.info('Quality regression verified by consensus');
|
|
847
849
|
return true;
|
|
848
850
|
}
|
|
849
|
-
|
|
851
|
+
logger.warn(`Quality regression NOT verified: ${result.success ? result.value.verdict : result.error.message}`);
|
|
850
852
|
return false;
|
|
851
853
|
}
|
|
852
854
|
return true; // No consensus needed
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* ADR-051: LLM-powered coverage analysis for intelligent gap detection
|
|
6
6
|
*/
|
|
7
|
+
import { LoggerFactory } from '../../../logging/index.js';
|
|
7
8
|
import { ok, err } from '../../../shared/types';
|
|
8
9
|
import { toError } from '../../../shared/error-utils.js';
|
|
9
10
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
@@ -16,6 +17,7 @@ const DEFAULT_CONFIG = {
|
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// Service Implementation
|
|
18
19
|
// ============================================================================
|
|
20
|
+
const logger = LoggerFactory.create('coverage-analysis/coverage-analyzer');
|
|
19
21
|
export class CoverageAnalyzerService {
|
|
20
22
|
static DEFAULT_THRESHOLD = 80;
|
|
21
23
|
static VECTOR_DIMENSION = 384;
|
|
@@ -249,7 +251,7 @@ Provide thoughtful, specific analysis based on the coverage data. Do not include
|
|
|
249
251
|
return this.getDefaultInsights();
|
|
250
252
|
}
|
|
251
253
|
catch (error) {
|
|
252
|
-
|
|
254
|
+
logger.warn('LLM analysis failed, using defaults');
|
|
253
255
|
return this.getDefaultInsights();
|
|
254
256
|
}
|
|
255
257
|
}
|
|
@@ -303,7 +305,7 @@ Provide thoughtful, specific analysis based on the coverage data. Do not include
|
|
|
303
305
|
};
|
|
304
306
|
}
|
|
305
307
|
catch {
|
|
306
|
-
|
|
308
|
+
logger.warn('Failed to parse LLM response as JSON');
|
|
307
309
|
return this.getDefaultInsights();
|
|
308
310
|
}
|
|
309
311
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* ADR-051: Added LLM-powered gap analysis for intelligent prioritization
|
|
6
6
|
*/
|
|
7
|
+
import { LoggerFactory } from '../../../logging/index.js';
|
|
7
8
|
import { ok, err } from '../../../shared/types';
|
|
8
9
|
import { toError } from '../../../shared/error-utils.js';
|
|
9
10
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
@@ -16,6 +17,7 @@ const DEFAULT_CONFIG = {
|
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// Service Implementation
|
|
18
19
|
// ============================================================================
|
|
20
|
+
const logger = LoggerFactory.create('coverage-analysis/gap-detector');
|
|
19
21
|
export class GapDetectorService {
|
|
20
22
|
static DEFAULT_MIN_COVERAGE = 80;
|
|
21
23
|
static VECTOR_DIMENSION = 384;
|
|
@@ -122,7 +124,7 @@ Return JSON in this exact format:
|
|
|
122
124
|
return err(new Error('Empty response from LLM'));
|
|
123
125
|
}
|
|
124
126
|
catch (error) {
|
|
125
|
-
|
|
127
|
+
logger.warn('LLM analysis failed');
|
|
126
128
|
return err(toError(error));
|
|
127
129
|
}
|
|
128
130
|
}
|
|
@@ -143,21 +143,6 @@ export interface HNSWIndexStats {
|
|
|
143
143
|
/** Number of insert operations performed */
|
|
144
144
|
insertOperations: number;
|
|
145
145
|
}
|
|
146
|
-
/**
|
|
147
|
-
* HNSW Index implementation delegating to the unified HnswAdapter (ADR-071).
|
|
148
|
-
*
|
|
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.
|
|
152
|
-
*
|
|
153
|
-
* @example
|
|
154
|
-
* ```typescript
|
|
155
|
-
* const index = new HNSWIndex(memoryBackend);
|
|
156
|
-
* await index.initialize();
|
|
157
|
-
* await index.insert('file:src/main.ts', embedding, { filePath: 'src/main.ts', ... });
|
|
158
|
-
* const similar = await index.search(queryEmbedding, 10);
|
|
159
|
-
* ```
|
|
160
|
-
*/
|
|
161
146
|
export declare class HNSWIndex implements IHNSWIndex {
|
|
162
147
|
private readonly memory;
|
|
163
148
|
private readonly config;
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*
|
|
19
19
|
* @module coverage-analysis/hnsw-index
|
|
20
20
|
*/
|
|
21
|
+
import { LoggerFactory } from '../../../logging/index.js';
|
|
21
22
|
import { HnswAdapter } from '../../../kernel/hnsw-adapter.js';
|
|
22
23
|
import { secureRandom } from '../../../shared/utils/crypto-random.js';
|
|
23
24
|
/**
|
|
@@ -50,6 +51,7 @@ export const DEFAULT_HNSW_CONFIG = {
|
|
|
50
51
|
* const similar = await index.search(queryEmbedding, 10);
|
|
51
52
|
* ```
|
|
52
53
|
*/
|
|
54
|
+
const logger = LoggerFactory.create('coverage-analysis/hnsw-index');
|
|
53
55
|
export class HNSWIndex {
|
|
54
56
|
memory;
|
|
55
57
|
config;
|
|
@@ -96,7 +98,7 @@ export class HNSWIndex {
|
|
|
96
98
|
efSearch: this.config.efSearch,
|
|
97
99
|
metric: adapterMetric,
|
|
98
100
|
});
|
|
99
|
-
|
|
101
|
+
logger.info(`HnswAdapter initialized: dimension=${this.config.dimensions}, ` +
|
|
100
102
|
`metric=${this.config.metric}, M=${this.config.M} (unified backend via ADR-071)`);
|
|
101
103
|
this.initialized = true;
|
|
102
104
|
}
|
|
@@ -117,32 +117,6 @@ export interface SublinearAnalyzerStats {
|
|
|
117
117
|
/** Performance vs linear scan improvement factor */
|
|
118
118
|
performanceImprovement: number;
|
|
119
119
|
}
|
|
120
|
-
/**
|
|
121
|
-
* Sublinear Coverage Analyzer
|
|
122
|
-
*
|
|
123
|
-
* Implements O(log n) coverage gap detection using HNSW vector indexing.
|
|
124
|
-
* This is the core implementation for ADR-003 performance targets.
|
|
125
|
-
*
|
|
126
|
-
* Key features:
|
|
127
|
-
* - O(log n) gap detection via HNSW approximate nearest neighbor search
|
|
128
|
-
* - Dense coverage embeddings capture coverage patterns
|
|
129
|
-
* - Batch indexing for efficient bulk operations
|
|
130
|
-
* - Risk zone detection using vector similarity clustering
|
|
131
|
-
* - <100ms target for 100k file codebases
|
|
132
|
-
*
|
|
133
|
-
* @example
|
|
134
|
-
* ```typescript
|
|
135
|
-
* const analyzer = new SublinearCoverageAnalyzer(memoryBackend);
|
|
136
|
-
* await analyzer.initialize();
|
|
137
|
-
* await analyzer.indexCoverageData(coverageData);
|
|
138
|
-
*
|
|
139
|
-
* // O(log n) gap detection
|
|
140
|
-
* const gaps = await analyzer.findGapsSublinear({ maxLineCoverage: 60 });
|
|
141
|
-
*
|
|
142
|
-
* // Find similar patterns
|
|
143
|
-
* const similar = await analyzer.findSimilarPatterns(gap, 5);
|
|
144
|
-
* ```
|
|
145
|
-
*/
|
|
146
120
|
export declare class SublinearCoverageAnalyzer implements ISublinearCoverageAnalyzer {
|
|
147
121
|
private readonly memory;
|
|
148
122
|
private readonly config;
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* @module coverage-analysis/sublinear-analyzer
|
|
18
18
|
*/
|
|
19
|
+
import { LoggerFactory } from '../../../logging/index.js';
|
|
19
20
|
import { ok, err } from '../../../shared/types';
|
|
20
21
|
import { createHNSWIndex, } from './hnsw-index';
|
|
21
22
|
import { toError } from '../../../shared/error-utils.js';
|
|
@@ -61,6 +62,7 @@ export const DEFAULT_ANALYZER_CONFIG = {
|
|
|
61
62
|
* const similar = await analyzer.findSimilarPatterns(gap, 5);
|
|
62
63
|
* ```
|
|
63
64
|
*/
|
|
65
|
+
const logger = LoggerFactory.create('coverage-analysis/sublinear-analyzer');
|
|
64
66
|
export class SublinearCoverageAnalyzer {
|
|
65
67
|
memory;
|
|
66
68
|
config;
|
|
@@ -179,7 +181,7 @@ export class SublinearCoverageAnalyzer {
|
|
|
179
181
|
const estimatedEffort = this.estimateEffort(totalUncoveredLines);
|
|
180
182
|
// Verify performance target
|
|
181
183
|
if (searchTimeMs > 100) {
|
|
182
|
-
|
|
184
|
+
logger.warn(`Sublinear search took ${searchTimeMs.toFixed(2)}ms, ` +
|
|
183
185
|
`exceeding 100ms target for ${this.fileCount} files`);
|
|
184
186
|
}
|
|
185
187
|
return ok({
|
|
@@ -48,15 +48,6 @@ export interface CoordinatorConfig extends BaseDomainCoordinatorConfig {
|
|
|
48
48
|
consensusConfig?: Partial<ConsensusEnabledConfig>;
|
|
49
49
|
}
|
|
50
50
|
type DefectWorkflowType = 'predict' | 'analyze' | 'regression' | 'cluster' | 'learn';
|
|
51
|
-
/**
|
|
52
|
-
* Defect Intelligence Coordinator
|
|
53
|
-
* Orchestrates defect analysis workflows and coordinates with agents
|
|
54
|
-
*
|
|
55
|
-
* V3 Integration:
|
|
56
|
-
* - MinCut topology awareness for routing and health monitoring (ADR-047)
|
|
57
|
-
* - Multi-model consensus for high-confidence predictions (MM-001)
|
|
58
|
-
* - CQ-002: Extends BaseDomainCoordinator
|
|
59
|
-
*/
|
|
60
51
|
export declare class DefectIntelligenceCoordinator extends BaseDomainCoordinator<CoordinatorConfig, DefectWorkflowType> implements IDefectIntelligenceCoordinator {
|
|
61
52
|
private readonly memory;
|
|
62
53
|
private readonly agentCoordinator;
|
|
@@ -71,7 +62,7 @@ export declare class DefectIntelligenceCoordinator extends BaseDomainCoordinator
|
|
|
71
62
|
/**
|
|
72
63
|
* Get weak vertices in this domain (for diagnostics)
|
|
73
64
|
*/
|
|
74
|
-
getDomainWeakVertices(): import("
|
|
65
|
+
getDomainWeakVertices(): import("../../index.js").WeakVertex[];
|
|
75
66
|
/**
|
|
76
67
|
* Subscribe to topology health changes
|
|
77
68
|
*/
|