agentic-qe 3.3.2 → 3.3.3
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/helpers/statusline-v3.cjs +96 -27
- package/README.md +6 -3
- package/package.json +1 -1
- package/scripts/sync-claude-flow.cjs +99 -0
- package/v3/CHANGELOG.md +87 -0
- package/v3/README.md +9 -5
- package/v3/dist/cli/bundle.js +43386 -37651
- package/v3/dist/coordination/consensus/domain-findings.d.ts +202 -0
- package/v3/dist/coordination/consensus/domain-findings.d.ts.map +1 -0
- package/v3/dist/coordination/consensus/domain-findings.js +66 -0
- package/v3/dist/coordination/consensus/domain-findings.js.map +1 -0
- package/v3/dist/coordination/consensus/index.d.ts +2 -0
- package/v3/dist/coordination/consensus/index.d.ts.map +1 -1
- package/v3/dist/coordination/consensus/index.js +4 -0
- package/v3/dist/coordination/consensus/index.js.map +1 -1
- package/v3/dist/coordination/index.d.ts +1 -0
- package/v3/dist/coordination/index.d.ts.map +1 -1
- package/v3/dist/coordination/index.js +4 -0
- package/v3/dist/coordination/index.js.map +1 -1
- package/v3/dist/coordination/mixins/consensus-enabled-domain.d.ts +225 -0
- package/v3/dist/coordination/mixins/consensus-enabled-domain.d.ts.map +1 -0
- package/v3/dist/coordination/mixins/consensus-enabled-domain.js +466 -0
- package/v3/dist/coordination/mixins/consensus-enabled-domain.js.map +1 -0
- package/v3/dist/coordination/mixins/index.d.ts +14 -0
- package/v3/dist/coordination/mixins/index.d.ts.map +1 -0
- package/v3/dist/coordination/mixins/index.js +28 -0
- package/v3/dist/coordination/mixins/index.js.map +1 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.d.ts +227 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.d.ts.map +1 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.js +368 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.js.map +1 -0
- package/v3/dist/coordination/queen-coordinator.d.ts +10 -0
- package/v3/dist/coordination/queen-coordinator.d.ts.map +1 -1
- package/v3/dist/coordination/queen-coordinator.js +40 -0
- package/v3/dist/coordination/queen-coordinator.js.map +1 -1
- package/v3/dist/coordination/task-executor.d.ts +21 -1
- package/v3/dist/coordination/task-executor.d.ts.map +1 -1
- package/v3/dist/coordination/task-executor.js +222 -5
- package/v3/dist/coordination/task-executor.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/coordinator.d.ts +92 -0
- package/v3/dist/domains/chaos-resilience/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/chaos-resilience/coordinator.js +241 -1
- package/v3/dist/domains/chaos-resilience/coordinator.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/plugin.js +1 -1
- package/v3/dist/domains/chaos-resilience/plugin.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +29 -2
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.d.ts.map +1 -1
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.js +62 -3
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.js.map +1 -1
- package/v3/dist/domains/code-intelligence/coordinator.d.ts +112 -0
- package/v3/dist/domains/code-intelligence/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/coordinator.js +221 -0
- package/v3/dist/domains/code-intelligence/coordinator.js.map +1 -1
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.d.ts +66 -2
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.js +253 -3
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.js.map +1 -1
- package/v3/dist/domains/contract-testing/coordinator.d.ts +89 -1
- package/v3/dist/domains/contract-testing/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/contract-testing/coordinator.js +222 -1
- package/v3/dist/domains/contract-testing/coordinator.js.map +1 -1
- package/v3/dist/domains/contract-testing/interfaces.d.ts +29 -1
- package/v3/dist/domains/contract-testing/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/contract-testing/plugin.js +1 -1
- package/v3/dist/domains/contract-testing/plugin.js.map +1 -1
- package/v3/dist/domains/contract-testing/services/contract-validator.d.ts +29 -2
- package/v3/dist/domains/contract-testing/services/contract-validator.d.ts.map +1 -1
- package/v3/dist/domains/contract-testing/services/contract-validator.js +58 -3
- package/v3/dist/domains/contract-testing/services/contract-validator.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/coordinator.d.ts +95 -2
- package/v3/dist/domains/coverage-analysis/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/coordinator.js +274 -6
- package/v3/dist/domains/coverage-analysis/coordinator.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.d.ts +119 -3
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.js +267 -5
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/gap-detector.d.ts +111 -2
- package/v3/dist/domains/coverage-analysis/services/gap-detector.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/gap-detector.js +231 -3
- package/v3/dist/domains/coverage-analysis/services/gap-detector.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/coordinator.d.ts +80 -1
- package/v3/dist/domains/defect-intelligence/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/coordinator.js +262 -7
- package/v3/dist/domains/defect-intelligence/coordinator.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/interfaces.d.ts +17 -0
- package/v3/dist/domains/defect-intelligence/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.d.ts +91 -2
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.js +274 -7
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.d.ts +79 -2
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.js +259 -3
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.js.map +1 -1
- package/v3/dist/domains/domain-interface.d.ts +155 -0
- package/v3/dist/domains/domain-interface.d.ts.map +1 -1
- package/v3/dist/domains/domain-interface.js +140 -0
- package/v3/dist/domains/domain-interface.js.map +1 -1
- package/v3/dist/domains/learning-optimization/coordinator.d.ts +88 -0
- package/v3/dist/domains/learning-optimization/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/coordinator.js +227 -1
- package/v3/dist/domains/learning-optimization/coordinator.js.map +1 -1
- package/v3/dist/domains/learning-optimization/index.d.ts +1 -1
- package/v3/dist/domains/learning-optimization/index.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/index.js.map +1 -1
- package/v3/dist/domains/learning-optimization/interfaces.d.ts +4 -0
- package/v3/dist/domains/learning-optimization/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/plugin.js +1 -1
- package/v3/dist/domains/learning-optimization/plugin.js.map +1 -1
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.d.ts +54 -2
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.js +90 -3
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.js.map +1 -1
- package/v3/dist/domains/quality-assessment/coordinator.d.ts +104 -0
- package/v3/dist/domains/quality-assessment/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/coordinator.js +354 -6
- package/v3/dist/domains/quality-assessment/coordinator.js.map +1 -1
- package/v3/dist/domains/quality-assessment/interfaces.d.ts +22 -0
- package/v3/dist/domains/quality-assessment/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.d.ts +61 -2
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.js +213 -5
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.js.map +1 -1
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.d.ts +59 -4
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.js +195 -3
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.js.map +1 -1
- package/v3/dist/domains/requirements-validation/coordinator.d.ts +78 -0
- package/v3/dist/domains/requirements-validation/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/coordinator.js +189 -0
- package/v3/dist/domains/requirements-validation/coordinator.js.map +1 -1
- package/v3/dist/domains/requirements-validation/interfaces.d.ts +4 -0
- package/v3/dist/domains/requirements-validation/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/services/requirements-validator.d.ts +106 -2
- package/v3/dist/domains/requirements-validation/services/requirements-validator.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/services/requirements-validator.js +263 -3
- package/v3/dist/domains/requirements-validation/services/requirements-validator.js.map +1 -1
- package/v3/dist/domains/security-compliance/coordinator.d.ts +56 -1
- package/v3/dist/domains/security-compliance/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/coordinator.js +241 -17
- package/v3/dist/domains/security-compliance/coordinator.js.map +1 -1
- package/v3/dist/domains/security-compliance/interfaces.d.ts +2 -0
- package/v3/dist/domains/security-compliance/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/services/security-scanner.d.ts +33 -2
- package/v3/dist/domains/security-compliance/services/security-scanner.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/services/security-scanner.js +107 -3
- package/v3/dist/domains/security-compliance/services/security-scanner.js.map +1 -1
- package/v3/dist/domains/test-execution/coordinator.d.ts +89 -0
- package/v3/dist/domains/test-execution/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/coordinator.js +259 -2
- package/v3/dist/domains/test-execution/coordinator.js.map +1 -1
- package/v3/dist/domains/test-execution/services/test-executor.d.ts +30 -2
- package/v3/dist/domains/test-execution/services/test-executor.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/test-executor.js +64 -3
- package/v3/dist/domains/test-execution/services/test-executor.js.map +1 -1
- package/v3/dist/domains/test-generation/coordinator.d.ts +97 -0
- package/v3/dist/domains/test-generation/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/coordinator.js +237 -0
- package/v3/dist/domains/test-generation/coordinator.js.map +1 -1
- package/v3/dist/domains/test-generation/interfaces.d.ts +2 -0
- package/v3/dist/domains/test-generation/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/test-generator.d.ts +32 -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 +158 -3
- package/v3/dist/domains/test-generation/services/test-generator.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/coordinator.d.ts +77 -0
- package/v3/dist/domains/visual-accessibility/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/coordinator.js +210 -2
- package/v3/dist/domains/visual-accessibility/coordinator.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/plugin.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/plugin.js +3 -3
- package/v3/dist/domains/visual-accessibility/plugin.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/visual-tester.d.ts +47 -2
- package/v3/dist/domains/visual-accessibility/services/visual-tester.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/visual-tester.js +87 -3
- package/v3/dist/domains/visual-accessibility/services/visual-tester.js.map +1 -1
- package/v3/dist/learning/experience-capture-middleware.d.ts +119 -0
- package/v3/dist/learning/experience-capture-middleware.d.ts.map +1 -0
- package/v3/dist/learning/experience-capture-middleware.js +416 -0
- package/v3/dist/learning/experience-capture-middleware.js.map +1 -0
- package/v3/dist/mcp/bundle.js +60723 -54421
- package/v3/dist/mcp/handlers/domain-handlers.d.ts +12 -13
- package/v3/dist/mcp/handlers/domain-handlers.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/index.d.ts +1 -1
- package/v3/dist/mcp/handlers/index.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/index.js +2 -2
- package/v3/dist/mcp/handlers/index.js.map +1 -1
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.d.ts +30 -0
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.d.ts.map +1 -0
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.js +75 -0
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.js.map +1 -0
- package/v3/dist/mcp/tools/chaos-resilience/inject.js +1 -1
- package/v3/dist/mcp/tools/chaos-resilience/inject.js.map +1 -1
- package/v3/dist/mcp/tools/contract-testing/validate.js +1 -1
- package/v3/dist/mcp/tools/contract-testing/validate.js.map +1 -1
- package/v3/dist/mcp/tools/learning-optimization/optimize.js +1 -1
- package/v3/dist/mcp/tools/learning-optimization/optimize.js.map +1 -1
- package/v3/dist/mcp/tools/visual-accessibility/index.js +2 -2
- package/v3/dist/mcp/tools/visual-accessibility/index.js.map +1 -1
- package/v3/dist/routing/qe-agent-registry.d.ts +1 -1
- package/v3/dist/routing/qe-agent-registry.d.ts.map +1 -1
- package/v3/dist/routing/qe-agent-registry.js +20 -1
- package/v3/dist/routing/qe-agent-registry.js.map +1 -1
- package/v3/dist/sync/claude-flow-bridge.d.ts +63 -0
- package/v3/dist/sync/claude-flow-bridge.d.ts.map +1 -0
- package/v3/dist/sync/claude-flow-bridge.js +320 -0
- package/v3/dist/sync/claude-flow-bridge.js.map +1 -0
- package/v3/package.json +1 -1
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Consensus Enabled Domain Mixin
|
|
3
|
+
* CONSENSUS-MIXIN-001: Reusable mixin for multi-model consensus verification
|
|
4
|
+
*
|
|
5
|
+
* This mixin allows any domain coordinator to leverage multi-model consensus
|
|
6
|
+
* verification for high-stakes decisions without duplicating consensus logic.
|
|
7
|
+
*
|
|
8
|
+
* @see docs/plans/AQE_V3_IMPROVEMENTS_PLAN.md - Phase 2: Multi-Model Verification
|
|
9
|
+
*/
|
|
10
|
+
import { createConsensusEngine, registerProvidersFromEnv, DEFAULT_CONSENSUS_CONFIG, } from '../consensus';
|
|
11
|
+
import { ok, err } from '../../shared/types';
|
|
12
|
+
/**
|
|
13
|
+
* Default consensus configuration
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_CONSENSUS_ENABLED_CONFIG = {
|
|
16
|
+
enableConsensus: true,
|
|
17
|
+
consensusThreshold: 0.7,
|
|
18
|
+
verifyFindingTypes: [],
|
|
19
|
+
strategy: 'weighted',
|
|
20
|
+
minModels: 2,
|
|
21
|
+
modelTimeout: 60000,
|
|
22
|
+
verifySeverities: ['critical', 'high'],
|
|
23
|
+
enableLogging: false,
|
|
24
|
+
};
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Domain Finding to Security Finding Conversion
|
|
27
|
+
// ============================================================================
|
|
28
|
+
/**
|
|
29
|
+
* Convert a generic DomainFinding to SecurityFinding format for the consensus engine
|
|
30
|
+
*/
|
|
31
|
+
function toSecurityFinding(finding, category = 'other') {
|
|
32
|
+
// Map FindingSeverity to Severity
|
|
33
|
+
const severityMap = {
|
|
34
|
+
critical: 'critical',
|
|
35
|
+
high: 'high',
|
|
36
|
+
medium: 'medium',
|
|
37
|
+
low: 'low',
|
|
38
|
+
info: 'info',
|
|
39
|
+
};
|
|
40
|
+
// Extract location from payload if available
|
|
41
|
+
const payload = finding.payload;
|
|
42
|
+
const location = payload?.location || {
|
|
43
|
+
file: 'unknown',
|
|
44
|
+
};
|
|
45
|
+
// Extract evidence from payload if available
|
|
46
|
+
const evidence = payload?.evidence || [];
|
|
47
|
+
return {
|
|
48
|
+
id: finding.id,
|
|
49
|
+
type: finding.type,
|
|
50
|
+
category,
|
|
51
|
+
severity: severityMap[finding.severity || 'medium'],
|
|
52
|
+
description: finding.description,
|
|
53
|
+
location,
|
|
54
|
+
evidence,
|
|
55
|
+
detectedAt: finding.detectedAt,
|
|
56
|
+
detectedBy: finding.detectedBy,
|
|
57
|
+
correlationId: finding.correlationId,
|
|
58
|
+
metadata: {
|
|
59
|
+
originalFinding: finding,
|
|
60
|
+
domainContext: finding.context,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Consensus Enabled Mixin Class
|
|
66
|
+
// ============================================================================
|
|
67
|
+
/**
|
|
68
|
+
* Mixin class that adds consensus verification capabilities to any domain coordinator
|
|
69
|
+
*
|
|
70
|
+
* This is designed to be used with TypeScript's class composition pattern.
|
|
71
|
+
* Domain coordinators can extend this mixin to gain consensus verification capabilities.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* class MyDomainCoordinator extends ConsensusEnabledMixin {
|
|
76
|
+
* constructor(config: MyConfig) {
|
|
77
|
+
* super({
|
|
78
|
+
* enableConsensus: true,
|
|
79
|
+
* consensusThreshold: 0.8,
|
|
80
|
+
* verifyFindingTypes: ['vulnerability', 'defect'],
|
|
81
|
+
* strategy: 'weighted',
|
|
82
|
+
* minModels: 2,
|
|
83
|
+
* modelTimeout: 30000,
|
|
84
|
+
* verifySeverities: ['critical', 'high'],
|
|
85
|
+
* enableLogging: true,
|
|
86
|
+
* });
|
|
87
|
+
* }
|
|
88
|
+
*
|
|
89
|
+
* async initialize(): Promise<void> {
|
|
90
|
+
* await this.initializeConsensus();
|
|
91
|
+
* // ... other initialization
|
|
92
|
+
* }
|
|
93
|
+
*
|
|
94
|
+
* async dispose(): Promise<void> {
|
|
95
|
+
* await this.disposeConsensus();
|
|
96
|
+
* // ... other cleanup
|
|
97
|
+
* }
|
|
98
|
+
*
|
|
99
|
+
* async processFindings(findings: DomainFinding[]): Promise<void> {
|
|
100
|
+
* for (const finding of findings) {
|
|
101
|
+
* if (this.requiresConsensus(finding)) {
|
|
102
|
+
* const result = await this.verifyFinding(finding);
|
|
103
|
+
* if (result.success && result.value.verdict === 'verified') {
|
|
104
|
+
* // Take action on verified finding
|
|
105
|
+
* }
|
|
106
|
+
* }
|
|
107
|
+
* }
|
|
108
|
+
* }
|
|
109
|
+
* }
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export class ConsensusEnabledMixin {
|
|
113
|
+
consensusConfig;
|
|
114
|
+
consensusEngine;
|
|
115
|
+
consensusInitialized = false;
|
|
116
|
+
/**
|
|
117
|
+
* Create a new ConsensusEnabledMixin
|
|
118
|
+
*
|
|
119
|
+
* @param config - Configuration for consensus verification
|
|
120
|
+
*/
|
|
121
|
+
constructor(config = {}) {
|
|
122
|
+
this.consensusConfig = {
|
|
123
|
+
...DEFAULT_CONSENSUS_ENABLED_CONFIG,
|
|
124
|
+
...config,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// Lifecycle Methods
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* Initialize the consensus engine
|
|
132
|
+
*
|
|
133
|
+
* Call this in the domain coordinator's initialize() method.
|
|
134
|
+
* Uses registerProvidersFromEnv to auto-detect available model providers.
|
|
135
|
+
*
|
|
136
|
+
* @throws Error if consensus initialization fails
|
|
137
|
+
*/
|
|
138
|
+
async initializeConsensus() {
|
|
139
|
+
if (!this.consensusConfig.enableConsensus) {
|
|
140
|
+
if (this.consensusConfig.enableLogging) {
|
|
141
|
+
console.log('[ConsensusEnabledMixin] Consensus verification disabled');
|
|
142
|
+
}
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
// Register providers from environment
|
|
147
|
+
const registry = registerProvidersFromEnv(this.consensusConfig.enableLogging);
|
|
148
|
+
const providers = registry.getAll();
|
|
149
|
+
if (providers.length === 0) {
|
|
150
|
+
if (this.consensusConfig.enableLogging) {
|
|
151
|
+
console.warn('[ConsensusEnabledMixin] No model providers available for consensus verification');
|
|
152
|
+
}
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
// Create consensus engine
|
|
156
|
+
this.consensusEngine = createConsensusEngine({
|
|
157
|
+
strategy: this.consensusConfig.strategy,
|
|
158
|
+
models: providers,
|
|
159
|
+
engineConfig: {
|
|
160
|
+
minModels: Math.min(this.consensusConfig.minModels, providers.length),
|
|
161
|
+
defaultModelTimeout: this.consensusConfig.modelTimeout,
|
|
162
|
+
verifySeverities: this.consensusConfig.verifySeverities,
|
|
163
|
+
humanReviewThreshold: DEFAULT_CONSENSUS_CONFIG.humanReviewThreshold,
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
this.consensusInitialized = true;
|
|
167
|
+
if (this.consensusConfig.enableLogging) {
|
|
168
|
+
console.log(`[ConsensusEnabledMixin] Initialized with ${providers.length} providers ` +
|
|
169
|
+
`(strategy: ${this.consensusConfig.strategy})`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.error('[ConsensusEnabledMixin] Failed to initialize consensus:', error);
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Dispose the consensus engine
|
|
179
|
+
*
|
|
180
|
+
* Call this in the domain coordinator's dispose() method.
|
|
181
|
+
*/
|
|
182
|
+
async disposeConsensus() {
|
|
183
|
+
if (this.consensusEngine) {
|
|
184
|
+
await this.consensusEngine.dispose();
|
|
185
|
+
this.consensusEngine = undefined;
|
|
186
|
+
this.consensusInitialized = false;
|
|
187
|
+
if (this.consensusConfig.enableLogging) {
|
|
188
|
+
console.log('[ConsensusEnabledMixin] Consensus engine disposed');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// ============================================================================
|
|
193
|
+
// IConsensusEnabledDomain Implementation
|
|
194
|
+
// ============================================================================
|
|
195
|
+
/**
|
|
196
|
+
* Verify a single finding using multi-model consensus
|
|
197
|
+
*/
|
|
198
|
+
async verifyFinding(finding, options) {
|
|
199
|
+
// Check if consensus is available
|
|
200
|
+
if (!this.consensusEngine || !this.consensusInitialized) {
|
|
201
|
+
return err(new Error('Consensus engine not initialized'));
|
|
202
|
+
}
|
|
203
|
+
// Check if finding requires consensus
|
|
204
|
+
if (!this.requiresConsensus(finding)) {
|
|
205
|
+
return err(new Error(`Finding ${finding.id} does not require consensus verification`));
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
// Convert to SecurityFinding format
|
|
209
|
+
const securityFinding = toSecurityFinding(finding, this.inferCategory(finding.type));
|
|
210
|
+
// Verify using consensus engine
|
|
211
|
+
const result = await this.consensusEngine.verify(securityFinding, {
|
|
212
|
+
forceVerification: true,
|
|
213
|
+
...options,
|
|
214
|
+
});
|
|
215
|
+
if (this.consensusConfig.enableLogging && result.success) {
|
|
216
|
+
console.log(`[ConsensusEnabledMixin] Finding ${finding.id} verified: ` +
|
|
217
|
+
`verdict=${result.value.verdict}, confidence=${result.value.confidence.toFixed(2)}`);
|
|
218
|
+
}
|
|
219
|
+
return result;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Check if a finding requires consensus verification
|
|
227
|
+
*/
|
|
228
|
+
requiresConsensus(finding) {
|
|
229
|
+
// Check if consensus is enabled
|
|
230
|
+
if (!this.consensusConfig.enableConsensus) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
// Check if finding type is in the verify list
|
|
234
|
+
const typeMatches = this.consensusConfig.verifyFindingTypes.length === 0 ||
|
|
235
|
+
this.consensusConfig.verifyFindingTypes.includes(finding.type);
|
|
236
|
+
if (!typeMatches) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
// Check severity
|
|
240
|
+
if (finding.severity) {
|
|
241
|
+
const severityMatches = this.consensusConfig.verifySeverities.includes(finding.severity);
|
|
242
|
+
if (severityMatches) {
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Check confidence threshold
|
|
247
|
+
return finding.confidence >= this.consensusConfig.consensusThreshold;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Verify multiple findings in batch
|
|
251
|
+
*/
|
|
252
|
+
async verifyFindings(findings, options) {
|
|
253
|
+
// Check if consensus is available
|
|
254
|
+
if (!this.consensusEngine || !this.consensusInitialized) {
|
|
255
|
+
return err(new Error('Consensus engine not initialized'));
|
|
256
|
+
}
|
|
257
|
+
// Filter findings that require consensus
|
|
258
|
+
const findingsRequiringConsensus = findings.filter(f => this.requiresConsensus(f));
|
|
259
|
+
if (findingsRequiringConsensus.length === 0) {
|
|
260
|
+
return ok([]);
|
|
261
|
+
}
|
|
262
|
+
try {
|
|
263
|
+
// Convert all findings to SecurityFinding format
|
|
264
|
+
const securityFindings = findingsRequiringConsensus.map(f => toSecurityFinding(f, this.inferCategory(f.type)));
|
|
265
|
+
// Verify batch
|
|
266
|
+
const result = await this.consensusEngine.verifyBatch(securityFindings, {
|
|
267
|
+
forceVerification: true,
|
|
268
|
+
...options,
|
|
269
|
+
});
|
|
270
|
+
if (this.consensusConfig.enableLogging && result.success) {
|
|
271
|
+
const verified = result.value.filter(r => r.verdict === 'verified').length;
|
|
272
|
+
console.log(`[ConsensusEnabledMixin] Batch verification complete: ` +
|
|
273
|
+
`${verified}/${result.value.length} verified`);
|
|
274
|
+
}
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get consensus statistics
|
|
283
|
+
*/
|
|
284
|
+
getConsensusStats() {
|
|
285
|
+
return this.consensusEngine?.getStats();
|
|
286
|
+
}
|
|
287
|
+
// ============================================================================
|
|
288
|
+
// Helper Methods
|
|
289
|
+
// ============================================================================
|
|
290
|
+
/**
|
|
291
|
+
* Check if consensus engine is available
|
|
292
|
+
*/
|
|
293
|
+
isConsensusAvailable() {
|
|
294
|
+
return this.consensusInitialized && this.consensusEngine !== undefined;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get the consensus engine (for advanced usage)
|
|
298
|
+
*/
|
|
299
|
+
getConsensusEngine() {
|
|
300
|
+
return this.consensusEngine;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Infer security finding category from finding type
|
|
304
|
+
*/
|
|
305
|
+
inferCategory(findingType) {
|
|
306
|
+
const categoryMap = {
|
|
307
|
+
// Security categories
|
|
308
|
+
'sql-injection': 'injection',
|
|
309
|
+
'command-injection': 'injection',
|
|
310
|
+
'xss': 'input-validation',
|
|
311
|
+
'authentication': 'authentication',
|
|
312
|
+
'authorization': 'authorization',
|
|
313
|
+
'crypto': 'cryptography',
|
|
314
|
+
'hardcoded-secret': 'cryptography',
|
|
315
|
+
'data-exposure': 'data-exposure',
|
|
316
|
+
'pii-exposure': 'data-exposure',
|
|
317
|
+
'misconfiguration': 'configuration',
|
|
318
|
+
'vulnerable-dependency': 'dependency',
|
|
319
|
+
'path-traversal': 'input-validation',
|
|
320
|
+
'session': 'session-management',
|
|
321
|
+
'timing': 'timing-attack',
|
|
322
|
+
'dos': 'resource-management',
|
|
323
|
+
'memory-leak': 'resource-management',
|
|
324
|
+
'logging': 'logging',
|
|
325
|
+
// Generic categories for non-security findings
|
|
326
|
+
'vulnerability': 'other',
|
|
327
|
+
'defect': 'other',
|
|
328
|
+
'coverage-gap': 'other',
|
|
329
|
+
'contract-violation': 'other',
|
|
330
|
+
'quality-issue': 'other',
|
|
331
|
+
};
|
|
332
|
+
// Find matching category
|
|
333
|
+
const lowercaseType = findingType.toLowerCase();
|
|
334
|
+
for (const [pattern, category] of Object.entries(categoryMap)) {
|
|
335
|
+
if (lowercaseType.includes(pattern)) {
|
|
336
|
+
return category;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return 'other';
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// ============================================================================
|
|
343
|
+
// Factory Function
|
|
344
|
+
// ============================================================================
|
|
345
|
+
/**
|
|
346
|
+
* Create a consensus-enabled mixin instance
|
|
347
|
+
*
|
|
348
|
+
* @param config - Configuration for consensus verification
|
|
349
|
+
* @returns ConsensusEnabledMixin instance
|
|
350
|
+
*
|
|
351
|
+
* @example
|
|
352
|
+
* ```typescript
|
|
353
|
+
* const mixin = createConsensusEnabledMixin({
|
|
354
|
+
* enableConsensus: true,
|
|
355
|
+
* consensusThreshold: 0.8,
|
|
356
|
+
* verifyFindingTypes: ['vulnerability'],
|
|
357
|
+
* strategy: 'weighted',
|
|
358
|
+
* minModels: 2,
|
|
359
|
+
* modelTimeout: 30000,
|
|
360
|
+
* });
|
|
361
|
+
*
|
|
362
|
+
* await mixin.initializeConsensus();
|
|
363
|
+
*
|
|
364
|
+
* const result = await mixin.verifyFinding(finding);
|
|
365
|
+
* ```
|
|
366
|
+
*/
|
|
367
|
+
export function createConsensusEnabledMixin(config = {}) {
|
|
368
|
+
return new ConsensusEnabledMixin(config);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Apply ConsensusEnabledMixin to a base class
|
|
372
|
+
*
|
|
373
|
+
* This is a TypeScript mixin pattern that adds consensus capabilities
|
|
374
|
+
* to any base class.
|
|
375
|
+
*
|
|
376
|
+
* @param Base - The base class to extend
|
|
377
|
+
* @param config - Configuration for consensus verification
|
|
378
|
+
* @returns Mixed class with consensus capabilities
|
|
379
|
+
*/
|
|
380
|
+
export function withConsensusEnabled(Base, config = {}) {
|
|
381
|
+
return class extends Base {
|
|
382
|
+
consensusConfig;
|
|
383
|
+
consensusEngine;
|
|
384
|
+
consensusInitialized = false;
|
|
385
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
386
|
+
constructor(...args) {
|
|
387
|
+
super(...args);
|
|
388
|
+
this.consensusConfig = {
|
|
389
|
+
...DEFAULT_CONSENSUS_ENABLED_CONFIG,
|
|
390
|
+
...config,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
async initializeConsensus() {
|
|
394
|
+
if (!this.consensusConfig.enableConsensus) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
const registry = registerProvidersFromEnv(this.consensusConfig.enableLogging);
|
|
398
|
+
const providers = registry.getAll();
|
|
399
|
+
if (providers.length === 0) {
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
this.consensusEngine = createConsensusEngine({
|
|
403
|
+
strategy: this.consensusConfig.strategy,
|
|
404
|
+
models: providers,
|
|
405
|
+
engineConfig: {
|
|
406
|
+
minModels: Math.min(this.consensusConfig.minModels, providers.length),
|
|
407
|
+
defaultModelTimeout: this.consensusConfig.modelTimeout,
|
|
408
|
+
verifySeverities: this.consensusConfig.verifySeverities,
|
|
409
|
+
},
|
|
410
|
+
});
|
|
411
|
+
this.consensusInitialized = true;
|
|
412
|
+
}
|
|
413
|
+
async disposeConsensus() {
|
|
414
|
+
if (this.consensusEngine) {
|
|
415
|
+
await this.consensusEngine.dispose();
|
|
416
|
+
this.consensusEngine = undefined;
|
|
417
|
+
this.consensusInitialized = false;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
async verifyFinding(finding, options) {
|
|
421
|
+
if (!this.consensusEngine || !this.consensusInitialized) {
|
|
422
|
+
return err(new Error('Consensus engine not initialized'));
|
|
423
|
+
}
|
|
424
|
+
if (!this.requiresConsensus(finding)) {
|
|
425
|
+
return err(new Error(`Finding ${finding.id} does not require consensus verification`));
|
|
426
|
+
}
|
|
427
|
+
const securityFinding = toSecurityFinding(finding, 'other');
|
|
428
|
+
return this.consensusEngine.verify(securityFinding, {
|
|
429
|
+
forceVerification: true,
|
|
430
|
+
...options,
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
requiresConsensus(finding) {
|
|
434
|
+
if (!this.consensusConfig.enableConsensus) {
|
|
435
|
+
return false;
|
|
436
|
+
}
|
|
437
|
+
const typeMatches = this.consensusConfig.verifyFindingTypes.length === 0 ||
|
|
438
|
+
this.consensusConfig.verifyFindingTypes.includes(finding.type);
|
|
439
|
+
if (!typeMatches) {
|
|
440
|
+
return false;
|
|
441
|
+
}
|
|
442
|
+
if (finding.severity && this.consensusConfig.verifySeverities.includes(finding.severity)) {
|
|
443
|
+
return true;
|
|
444
|
+
}
|
|
445
|
+
return finding.confidence >= this.consensusConfig.consensusThreshold;
|
|
446
|
+
}
|
|
447
|
+
async verifyFindings(findings, options) {
|
|
448
|
+
if (!this.consensusEngine || !this.consensusInitialized) {
|
|
449
|
+
return err(new Error('Consensus engine not initialized'));
|
|
450
|
+
}
|
|
451
|
+
const findingsRequiringConsensus = findings.filter(f => this.requiresConsensus(f));
|
|
452
|
+
if (findingsRequiringConsensus.length === 0) {
|
|
453
|
+
return ok([]);
|
|
454
|
+
}
|
|
455
|
+
const securityFindings = findingsRequiringConsensus.map(f => toSecurityFinding(f, 'other'));
|
|
456
|
+
return this.consensusEngine.verifyBatch(securityFindings, {
|
|
457
|
+
forceVerification: true,
|
|
458
|
+
...options,
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
getConsensusStats() {
|
|
462
|
+
return this.consensusEngine?.getStats();
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
//# sourceMappingURL=consensus-enabled-domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-enabled-domain.js","sourceRoot":"","sources":["../../../src/coordination/mixins/consensus-enabled-domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Coordination Mixins
|
|
3
|
+
* Reusable mixins for domain coordinator capabilities
|
|
4
|
+
*
|
|
5
|
+
* Mixins provide cross-cutting capabilities that can be composed into
|
|
6
|
+
* domain coordinators without inheritance hierarchies.
|
|
7
|
+
*/
|
|
8
|
+
export { MinCutAwareDomainMixin, createMinCutAwareMixin, isMinCutAwareDomain, DEFAULT_MINCUT_AWARE_CONFIG, } from './mincut-aware-domain';
|
|
9
|
+
export type { IMinCutAwareDomain, MinCutAwareConfig, } from './mincut-aware-domain';
|
|
10
|
+
export { ConsensusEnabledMixin, createConsensusEnabledMixin, withConsensusEnabled, DEFAULT_CONSENSUS_ENABLED_CONFIG, } from './consensus-enabled-domain';
|
|
11
|
+
export type { IConsensusEnabledDomain, ConsensusEnabledConfig, Constructor, } from './consensus-enabled-domain';
|
|
12
|
+
export { createDomainFinding, isHighStakesFinding, generateFindingId, } from '../consensus/domain-findings';
|
|
13
|
+
export type { DomainFinding, FindingSeverity, SecurityFindingPayload, DefectPredictionPayload, ContractViolationPayload, } from '../consensus/domain-findings';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/coordination/mixins/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAEL,qBAAqB,EAGrB,2BAA2B,EAG3B,oBAAoB,EAGpB,gCAAgC,GACjC,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAEV,uBAAuB,EACvB,sBAAsB,EAGtB,WAAW,GACZ,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAItC,YAAY,EACV,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Coordination Mixins
|
|
3
|
+
* Reusable mixins for domain coordinator capabilities
|
|
4
|
+
*
|
|
5
|
+
* Mixins provide cross-cutting capabilities that can be composed into
|
|
6
|
+
* domain coordinators without inheritance hierarchies.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// MinCut-Aware Domain Mixin
|
|
10
|
+
// ============================================================================
|
|
11
|
+
export { MinCutAwareDomainMixin, createMinCutAwareMixin, isMinCutAwareDomain, DEFAULT_MINCUT_AWARE_CONFIG, } from './mincut-aware-domain';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Consensus Enabled Domain Mixin (CONSENSUS-MIXIN-001)
|
|
14
|
+
// ============================================================================
|
|
15
|
+
export {
|
|
16
|
+
// Main mixin class
|
|
17
|
+
ConsensusEnabledMixin,
|
|
18
|
+
// Factory function
|
|
19
|
+
createConsensusEnabledMixin,
|
|
20
|
+
// TypeScript mixin helper
|
|
21
|
+
withConsensusEnabled,
|
|
22
|
+
// Configuration
|
|
23
|
+
DEFAULT_CONSENSUS_ENABLED_CONFIG, } from './consensus-enabled-domain';
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Re-export Domain Finding Types (used by consensus mixin)
|
|
26
|
+
// ============================================================================
|
|
27
|
+
export { createDomainFinding, isHighStakesFinding, generateFindingId, } from '../consensus/domain-findings';
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordination/mixins/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAO/B,+EAA+E;AAC/E,uDAAuD;AACvD,+EAA+E;AAE/E,OAAO;AACL,mBAAmB;AACnB,qBAAqB;AAErB,mBAAmB;AACnB,2BAA2B;AAE3B,0BAA0B;AAC1B,oBAAoB;AAEpB,gBAAgB;AAChB,gCAAgC,GACjC,MAAM,4BAA4B,CAAC;AAWpC,+EAA+E;AAC/E,2DAA2D;AAC3D,+EAA+E;AAE/E,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC"}
|