agentic-qe 1.8.4 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
- package/CHANGELOG.md +375 -0
- package/README.md +86 -18
- package/dist/App.d.ts +5 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +15 -0
- package/dist/App.js.map +1 -0
- package/dist/cli/commands/constitution.d.ts +34 -0
- package/dist/cli/commands/constitution.d.ts.map +1 -0
- package/dist/cli/commands/constitution.js +679 -0
- package/dist/cli/commands/constitution.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -75
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +22 -2292
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +36 -0
- package/dist/cli/commands/telemetry.d.ts.map +1 -0
- package/dist/cli/commands/telemetry.js +364 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/index.js +66 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/agents.d.ts +22 -0
- package/dist/cli/init/agents.d.ts.map +1 -0
- package/dist/cli/init/agents.js +522 -0
- package/dist/cli/init/agents.js.map +1 -0
- package/dist/cli/init/bash-wrapper.d.ts +14 -0
- package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
- package/dist/cli/init/bash-wrapper.js +47 -0
- package/dist/cli/init/bash-wrapper.js.map +1 -0
- package/dist/cli/init/claude-config.d.ts +24 -0
- package/dist/cli/init/claude-config.d.ts.map +1 -0
- package/dist/cli/init/claude-config.js +275 -0
- package/dist/cli/init/claude-config.js.map +1 -0
- package/dist/cli/init/claude-md.d.ts +19 -0
- package/dist/cli/init/claude-md.d.ts.map +1 -0
- package/dist/cli/init/claude-md.js +153 -0
- package/dist/cli/init/claude-md.js.map +1 -0
- package/dist/cli/init/commands.d.ts +6 -0
- package/dist/cli/init/commands.d.ts.map +1 -0
- package/dist/cli/init/commands.js +83 -0
- package/dist/cli/init/commands.js.map +1 -0
- package/dist/cli/init/database-init.d.ts +15 -0
- package/dist/cli/init/database-init.d.ts.map +1 -0
- package/dist/cli/init/database-init.js +203 -0
- package/dist/cli/init/database-init.js.map +1 -0
- package/dist/cli/init/directory-structure.d.ts +14 -0
- package/dist/cli/init/directory-structure.d.ts.map +1 -0
- package/dist/cli/init/directory-structure.js +107 -0
- package/dist/cli/init/directory-structure.js.map +1 -0
- package/dist/cli/init/documentation.d.ts +14 -0
- package/dist/cli/init/documentation.d.ts.map +1 -0
- package/dist/cli/init/documentation.js +195 -0
- package/dist/cli/init/documentation.js.map +1 -0
- package/dist/cli/init/fleet-config.d.ts +34 -0
- package/dist/cli/init/fleet-config.d.ts.map +1 -0
- package/dist/cli/init/fleet-config.js +269 -0
- package/dist/cli/init/fleet-config.js.map +1 -0
- package/dist/cli/init/helpers.d.ts +6 -0
- package/dist/cli/init/helpers.d.ts.map +1 -0
- package/dist/cli/init/helpers.js +94 -0
- package/dist/cli/init/helpers.js.map +1 -0
- package/dist/cli/init/index.d.ts +32 -0
- package/dist/cli/init/index.d.ts.map +1 -0
- package/dist/cli/init/index.js +294 -0
- package/dist/cli/init/index.js.map +1 -0
- package/dist/cli/init/skills.d.ts +6 -0
- package/dist/cli/init/skills.d.ts.map +1 -0
- package/dist/cli/init/skills.js +138 -0
- package/dist/cli/init/skills.js.map +1 -0
- package/dist/cli/init/utils/file-utils.d.ts +74 -0
- package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/file-utils.js +187 -0
- package/dist/cli/init/utils/file-utils.js.map +1 -0
- package/dist/cli/init/utils/index.d.ts +18 -0
- package/dist/cli/init/utils/index.d.ts.map +1 -0
- package/dist/cli/init/utils/index.js +48 -0
- package/dist/cli/init/utils/index.js.map +1 -0
- package/dist/cli/init/utils/log-utils.d.ts +47 -0
- package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/log-utils.js +68 -0
- package/dist/cli/init/utils/log-utils.js.map +1 -0
- package/dist/cli/init/utils/path-utils.d.ts +91 -0
- package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/path-utils.js +208 -0
- package/dist/cli/init/utils/path-utils.js.map +1 -0
- package/dist/cli/init/utils/validation-utils.d.ts +44 -0
- package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/validation-utils.js +68 -0
- package/dist/cli/init/utils/validation-utils.js.map +1 -0
- package/dist/cli/init/utils.d.ts +183 -0
- package/dist/cli/init/utils.d.ts.map +1 -0
- package/dist/cli/init/utils.js +354 -0
- package/dist/cli/init/utils.js.map +1 -0
- package/dist/components/Dashboard/Dashboard.d.ts +4 -0
- package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
- package/dist/components/Dashboard/Dashboard.js +148 -0
- package/dist/components/Dashboard/Dashboard.js.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.js +138 -0
- package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.js +303 -0
- package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/base.d.ts +144 -0
- package/dist/constitution/evaluators/base.d.ts.map +1 -0
- package/dist/constitution/evaluators/base.js +144 -0
- package/dist/constitution/evaluators/base.js.map +1 -0
- package/dist/constitution/evaluators/index.d.ts +19 -0
- package/dist/constitution/evaluators/index.d.ts.map +1 -0
- package/dist/constitution/evaluators/index.js +56 -0
- package/dist/constitution/evaluators/index.js.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.js +195 -0
- package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
- package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
- package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
- package/dist/contexts/DashboardContext.d.ts +41 -0
- package/dist/contexts/DashboardContext.d.ts.map +1 -0
- package/dist/contexts/DashboardContext.js +187 -0
- package/dist/contexts/DashboardContext.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +40 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +279 -120
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +69 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/telemetry/instrumentation/agent.d.ts +158 -0
- package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/agent.js +372 -0
- package/dist/telemetry/instrumentation/agent.js.map +1 -0
- package/dist/telemetry/instrumentation/index.d.ts +24 -0
- package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/index.js +54 -0
- package/dist/telemetry/instrumentation/index.js.map +1 -0
- package/dist/telemetry/instrumentation/memory.d.ts +313 -0
- package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/memory.js +552 -0
- package/dist/telemetry/instrumentation/memory.js.map +1 -0
- package/dist/telemetry/instrumentation/task.d.ts +146 -0
- package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/task.js +305 -0
- package/dist/telemetry/instrumentation/task.js.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.js +526 -0
- package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
- package/dist/telemetry/metrics/index.d.ts +4 -1
- package/dist/telemetry/metrics/index.d.ts.map +1 -1
- package/dist/telemetry/metrics/index.js +18 -2
- package/dist/telemetry/metrics/index.js.map +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/telemetry/types.d.ts.map +1 -1
- package/dist/visualization/api/RestEndpoints.d.ts +136 -0
- package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
- package/dist/visualization/api/RestEndpoints.js +428 -0
- package/dist/visualization/api/RestEndpoints.js.map +1 -0
- package/dist/visualization/api/WebSocketServer.d.ts +165 -0
- package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
- package/dist/visualization/api/WebSocketServer.js +518 -0
- package/dist/visualization/api/WebSocketServer.js.map +1 -0
- package/dist/visualization/core/DataTransformer.d.ts +89 -0
- package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
- package/dist/visualization/core/DataTransformer.js +478 -0
- package/dist/visualization/core/DataTransformer.js.map +1 -0
- package/dist/visualization/index.d.ts +92 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +121 -0
- package/dist/visualization/index.js.map +1 -0
- package/dist/visualization/types.d.ts +148 -0
- package/dist/visualization/types.d.ts.map +1 -0
- package/dist/visualization/types.js +7 -0
- package/dist/visualization/types.js.map +1 -0
- package/dist/voting/consensus.d.ts +87 -0
- package/dist/voting/consensus.d.ts.map +1 -0
- package/dist/voting/consensus.js +568 -0
- package/dist/voting/consensus.js.map +1 -0
- package/dist/voting/index.d.ts +12 -0
- package/dist/voting/index.d.ts.map +1 -0
- package/dist/voting/index.js +36 -0
- package/dist/voting/index.js.map +1 -0
- package/dist/voting/orchestrator.d.ts +65 -0
- package/dist/voting/orchestrator.d.ts.map +1 -0
- package/dist/voting/orchestrator.js +306 -0
- package/dist/voting/orchestrator.js.map +1 -0
- package/dist/voting/panel-assembly.d.ts +54 -0
- package/dist/voting/panel-assembly.d.ts.map +1 -0
- package/dist/voting/panel-assembly.js +192 -0
- package/dist/voting/panel-assembly.js.map +1 -0
- package/dist/voting/protocol.d.ts +119 -0
- package/dist/voting/protocol.d.ts.map +1 -0
- package/dist/voting/protocol.js +18 -0
- package/dist/voting/protocol.js.map +1 -0
- package/dist/voting/types.d.ts +125 -0
- package/dist/voting/types.d.ts.map +1 -0
- package/dist/voting/types.js +7 -0
- package/dist/voting/types.js.map +1 -0
- package/package.json +27 -2
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Consensus Algorithms for Agent Voting
|
|
4
|
+
*
|
|
5
|
+
* Implements three consensus mechanisms:
|
|
6
|
+
* 1. Majority Consensus - Simple majority voting
|
|
7
|
+
* 2. Weighted Consensus - Expertise-based weighting
|
|
8
|
+
* 3. Bayesian Consensus - Probabilistic inference
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ConsensusFactory = exports.ConsensusEngine = void 0;
|
|
12
|
+
exports.calculateVoteTally = calculateVoteTally;
|
|
13
|
+
exports.majorityConsensus = majorityConsensus;
|
|
14
|
+
exports.weightedConsensus = weightedConsensus;
|
|
15
|
+
exports.bayesianConsensus = bayesianConsensus;
|
|
16
|
+
exports.calculateAgreementMetrics = calculateAgreementMetrics;
|
|
17
|
+
const protocol_1 = require("./protocol");
|
|
18
|
+
/**
|
|
19
|
+
* Calculate vote tally from collected votes
|
|
20
|
+
*/
|
|
21
|
+
function calculateVoteTally(votes, clause) {
|
|
22
|
+
const approvals = votes.filter(v => v.vote === protocol_1.VoteType.APPROVE).length;
|
|
23
|
+
const rejections = votes.filter(v => v.vote === protocol_1.VoteType.REJECT).length;
|
|
24
|
+
const abstentions = votes.filter(v => v.vote === protocol_1.VoteType.ABSTAIN).length;
|
|
25
|
+
return {
|
|
26
|
+
clauseId: clause.id,
|
|
27
|
+
approvals,
|
|
28
|
+
rejections,
|
|
29
|
+
abstentions,
|
|
30
|
+
totalVotes: votes.length,
|
|
31
|
+
requiredQuorum: clause.requiredQuorum,
|
|
32
|
+
votes
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Majority Consensus Algorithm
|
|
37
|
+
*
|
|
38
|
+
* Simple majority voting with quorum requirements
|
|
39
|
+
* - Requires minimum quorum participation
|
|
40
|
+
* - Approves if >50% of votes are approvals
|
|
41
|
+
* - Handles ties with configurable tie-breaker
|
|
42
|
+
*/
|
|
43
|
+
function majorityConsensus(tally, config) {
|
|
44
|
+
const { approvals, rejections, abstentions, totalVotes, requiredQuorum } = tally;
|
|
45
|
+
// Filter out low-confidence votes
|
|
46
|
+
const validVotes = tally.votes.filter(v => v.confidence >= config.confidenceThreshold);
|
|
47
|
+
const validApprovals = validVotes.filter(v => v.vote === protocol_1.VoteType.APPROVE).length;
|
|
48
|
+
const validRejections = validVotes.filter(v => v.vote === protocol_1.VoteType.REJECT).length;
|
|
49
|
+
const validTotal = validVotes.length;
|
|
50
|
+
// Check quorum
|
|
51
|
+
const quorumMet = validTotal >= Math.max(requiredQuorum, config.minimumQuorum);
|
|
52
|
+
if (!quorumMet) {
|
|
53
|
+
return {
|
|
54
|
+
clauseId: tally.clauseId,
|
|
55
|
+
decision: 'disputed',
|
|
56
|
+
confidence: 0,
|
|
57
|
+
agreement: 0,
|
|
58
|
+
algorithm: 'majority',
|
|
59
|
+
metadata: {
|
|
60
|
+
totalVotes,
|
|
61
|
+
approvals,
|
|
62
|
+
rejections,
|
|
63
|
+
abstentions,
|
|
64
|
+
quorumMet: false
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Calculate approval percentage (excluding abstentions)
|
|
69
|
+
const votingTotal = validApprovals + validRejections;
|
|
70
|
+
const approvalRate = votingTotal > 0 ? validApprovals / votingTotal : 0;
|
|
71
|
+
// Determine decision
|
|
72
|
+
let decision;
|
|
73
|
+
if (approvalRate > config.approvalThreshold) {
|
|
74
|
+
decision = 'approved';
|
|
75
|
+
}
|
|
76
|
+
else if (approvalRate < (1 - config.approvalThreshold)) {
|
|
77
|
+
decision = 'rejected';
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Tie - use tie-breaker
|
|
81
|
+
decision = handleTieBreaker(config.tieBreaker, tally);
|
|
82
|
+
}
|
|
83
|
+
// Calculate confidence based on vote distribution
|
|
84
|
+
const confidence = calculateMajorityConfidence(validApprovals, validRejections, validTotal);
|
|
85
|
+
// Calculate agreement (how unified the vote is)
|
|
86
|
+
const agreement = calculateAgreement(validApprovals, validRejections, validTotal);
|
|
87
|
+
// Identify disputed agents (those who voted against the decision)
|
|
88
|
+
const disputedAgents = tally.votes
|
|
89
|
+
.filter(v => {
|
|
90
|
+
if (decision === 'approved')
|
|
91
|
+
return v.vote === protocol_1.VoteType.REJECT;
|
|
92
|
+
if (decision === 'rejected')
|
|
93
|
+
return v.vote === protocol_1.VoteType.APPROVE;
|
|
94
|
+
return false;
|
|
95
|
+
})
|
|
96
|
+
.map(v => v.agentId);
|
|
97
|
+
return {
|
|
98
|
+
clauseId: tally.clauseId,
|
|
99
|
+
decision,
|
|
100
|
+
confidence,
|
|
101
|
+
agreement,
|
|
102
|
+
algorithm: 'majority',
|
|
103
|
+
metadata: {
|
|
104
|
+
totalVotes,
|
|
105
|
+
approvals,
|
|
106
|
+
rejections,
|
|
107
|
+
abstentions,
|
|
108
|
+
quorumMet
|
|
109
|
+
},
|
|
110
|
+
disputedAgents: disputedAgents.length > 0 ? disputedAgents : undefined
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Weighted Consensus Algorithm
|
|
115
|
+
*
|
|
116
|
+
* Uses agent expertise to weight votes
|
|
117
|
+
* - Agents with higher expertise have more influence
|
|
118
|
+
* - Historical accuracy affects weight
|
|
119
|
+
* - Supports multiple weighting strategies
|
|
120
|
+
*/
|
|
121
|
+
function weightedConsensus(tally, expertiseMap, config) {
|
|
122
|
+
const { requiredQuorum, votes } = tally;
|
|
123
|
+
// Filter valid votes
|
|
124
|
+
const validVotes = votes.filter(v => v.confidence >= config.confidenceThreshold);
|
|
125
|
+
// Check quorum
|
|
126
|
+
const quorumMet = validVotes.length >= Math.max(requiredQuorum, config.minimumQuorum);
|
|
127
|
+
if (!quorumMet) {
|
|
128
|
+
return {
|
|
129
|
+
clauseId: tally.clauseId,
|
|
130
|
+
decision: 'disputed',
|
|
131
|
+
confidence: 0,
|
|
132
|
+
agreement: 0,
|
|
133
|
+
algorithm: 'weighted',
|
|
134
|
+
metadata: {
|
|
135
|
+
totalVotes: tally.totalVotes,
|
|
136
|
+
approvals: tally.approvals,
|
|
137
|
+
rejections: tally.rejections,
|
|
138
|
+
abstentions: tally.abstentions,
|
|
139
|
+
quorumMet: false
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// Calculate weighted votes
|
|
144
|
+
let weightedApprovals = 0;
|
|
145
|
+
let weightedRejections = 0;
|
|
146
|
+
let totalWeight = 0;
|
|
147
|
+
const strategy = config.weightingStrategy || 'linear';
|
|
148
|
+
for (const vote of validVotes) {
|
|
149
|
+
if (vote.vote === protocol_1.VoteType.ABSTAIN)
|
|
150
|
+
continue;
|
|
151
|
+
const expertise = expertiseMap.get(vote.agentId);
|
|
152
|
+
const weight = calculateAgentWeight(expertise, vote, strategy);
|
|
153
|
+
totalWeight += weight;
|
|
154
|
+
if (vote.vote === protocol_1.VoteType.APPROVE) {
|
|
155
|
+
weightedApprovals += weight;
|
|
156
|
+
}
|
|
157
|
+
else if (vote.vote === protocol_1.VoteType.REJECT) {
|
|
158
|
+
weightedRejections += weight;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Calculate weighted approval rate
|
|
162
|
+
const weightedApprovalRate = totalWeight > 0 ? weightedApprovals / totalWeight : 0;
|
|
163
|
+
// Determine decision
|
|
164
|
+
let decision;
|
|
165
|
+
if (weightedApprovalRate > config.approvalThreshold) {
|
|
166
|
+
decision = 'approved';
|
|
167
|
+
}
|
|
168
|
+
else if (weightedApprovalRate < (1 - config.approvalThreshold)) {
|
|
169
|
+
decision = 'rejected';
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
decision = handleTieBreaker(config.tieBreaker, tally);
|
|
173
|
+
}
|
|
174
|
+
// Calculate confidence based on weighted distribution and vote confidence
|
|
175
|
+
const confidence = calculateWeightedConfidence(weightedApprovals, weightedRejections, totalWeight, validVotes);
|
|
176
|
+
// Calculate agreement
|
|
177
|
+
const agreement = calculateAgreement(weightedApprovals, weightedRejections, totalWeight);
|
|
178
|
+
// Identify disputed agents
|
|
179
|
+
const disputedAgents = votes
|
|
180
|
+
.filter(v => {
|
|
181
|
+
if (decision === 'approved')
|
|
182
|
+
return v.vote === protocol_1.VoteType.REJECT;
|
|
183
|
+
if (decision === 'rejected')
|
|
184
|
+
return v.vote === protocol_1.VoteType.APPROVE;
|
|
185
|
+
return false;
|
|
186
|
+
})
|
|
187
|
+
.map(v => v.agentId);
|
|
188
|
+
return {
|
|
189
|
+
clauseId: tally.clauseId,
|
|
190
|
+
decision,
|
|
191
|
+
confidence,
|
|
192
|
+
agreement,
|
|
193
|
+
algorithm: 'weighted',
|
|
194
|
+
metadata: {
|
|
195
|
+
totalVotes: tally.totalVotes,
|
|
196
|
+
approvals: tally.approvals,
|
|
197
|
+
rejections: tally.rejections,
|
|
198
|
+
abstentions: tally.abstentions,
|
|
199
|
+
quorumMet
|
|
200
|
+
},
|
|
201
|
+
disputedAgents: disputedAgents.length > 0 ? disputedAgents : undefined
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Bayesian Consensus Algorithm
|
|
206
|
+
*
|
|
207
|
+
* Uses Bayesian inference to update beliefs based on votes
|
|
208
|
+
* - Incorporates prior beliefs about clause approval
|
|
209
|
+
* - Updates posterior probability with each vote
|
|
210
|
+
* - Accounts for vote confidence and agent expertise
|
|
211
|
+
*/
|
|
212
|
+
function bayesianConsensus(tally, prior, expertiseMap, config) {
|
|
213
|
+
const { requiredQuorum, votes } = tally;
|
|
214
|
+
// Filter valid votes
|
|
215
|
+
const validVotes = votes.filter(v => v.confidence >= config.confidenceThreshold);
|
|
216
|
+
// Check quorum
|
|
217
|
+
const quorumMet = validVotes.length >= Math.max(requiredQuorum, config.minimumQuorum);
|
|
218
|
+
if (!quorumMet) {
|
|
219
|
+
return {
|
|
220
|
+
clauseId: tally.clauseId,
|
|
221
|
+
decision: 'disputed',
|
|
222
|
+
confidence: 0,
|
|
223
|
+
agreement: 0,
|
|
224
|
+
algorithm: 'bayesian',
|
|
225
|
+
metadata: {
|
|
226
|
+
totalVotes: tally.totalVotes,
|
|
227
|
+
approvals: tally.approvals,
|
|
228
|
+
rejections: tally.rejections,
|
|
229
|
+
abstentions: tally.abstentions,
|
|
230
|
+
quorumMet: false
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
// Start with prior probability
|
|
235
|
+
let posteriorApproval = prior.priorProbability;
|
|
236
|
+
let posteriorRejection = 1 - prior.priorProbability;
|
|
237
|
+
// Bayesian update with each vote
|
|
238
|
+
for (const vote of validVotes) {
|
|
239
|
+
if (vote.vote === protocol_1.VoteType.ABSTAIN)
|
|
240
|
+
continue;
|
|
241
|
+
const expertise = expertiseMap.get(vote.agentId);
|
|
242
|
+
// Likelihood: P(vote | true state)
|
|
243
|
+
// High expertise agents are more likely to be correct
|
|
244
|
+
const accuracy = expertise ? expertise.successRate : 0.5;
|
|
245
|
+
// Update based on vote
|
|
246
|
+
if (vote.vote === protocol_1.VoteType.APPROVE) {
|
|
247
|
+
// P(approve | should approve) = accuracy
|
|
248
|
+
// P(approve | should reject) = 1 - accuracy
|
|
249
|
+
const likelihood = accuracy * vote.confidence;
|
|
250
|
+
const falsePositive = (1 - accuracy) * vote.confidence;
|
|
251
|
+
// Bayesian update
|
|
252
|
+
const evidence = likelihood * posteriorApproval + falsePositive * posteriorRejection;
|
|
253
|
+
if (evidence > 0) {
|
|
254
|
+
posteriorApproval = (likelihood * posteriorApproval) / evidence;
|
|
255
|
+
posteriorRejection = 1 - posteriorApproval;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else if (vote.vote === protocol_1.VoteType.REJECT) {
|
|
259
|
+
// P(reject | should reject) = accuracy
|
|
260
|
+
// P(reject | should approve) = 1 - accuracy
|
|
261
|
+
const likelihood = accuracy * vote.confidence;
|
|
262
|
+
const falseNegative = (1 - accuracy) * vote.confidence;
|
|
263
|
+
// Bayesian update
|
|
264
|
+
const evidence = likelihood * posteriorRejection + falseNegative * posteriorApproval;
|
|
265
|
+
if (evidence > 0) {
|
|
266
|
+
posteriorRejection = (likelihood * posteriorRejection) / evidence;
|
|
267
|
+
posteriorApproval = 1 - posteriorRejection;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Apply evidence weight to prevent over-updating
|
|
271
|
+
posteriorApproval = prior.priorProbability * (1 - prior.evidenceWeight) +
|
|
272
|
+
posteriorApproval * prior.evidenceWeight;
|
|
273
|
+
posteriorRejection = 1 - posteriorApproval;
|
|
274
|
+
}
|
|
275
|
+
// Determine decision based on posterior probability
|
|
276
|
+
let decision;
|
|
277
|
+
if (posteriorApproval > config.approvalThreshold) {
|
|
278
|
+
decision = 'approved';
|
|
279
|
+
}
|
|
280
|
+
else if (posteriorRejection > config.approvalThreshold) {
|
|
281
|
+
decision = 'rejected';
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
decision = 'disputed';
|
|
285
|
+
}
|
|
286
|
+
// Confidence is the posterior probability of the decision
|
|
287
|
+
const confidence = decision === 'approved' ? posteriorApproval :
|
|
288
|
+
decision === 'rejected' ? posteriorRejection :
|
|
289
|
+
Math.max(posteriorApproval, posteriorRejection);
|
|
290
|
+
// Agreement based on how close votes align with posterior
|
|
291
|
+
const agreement = calculateBayesianAgreement(validVotes, posteriorApproval);
|
|
292
|
+
// Identify disputed agents
|
|
293
|
+
const disputedAgents = votes
|
|
294
|
+
.filter(v => {
|
|
295
|
+
if (decision === 'approved')
|
|
296
|
+
return v.vote === protocol_1.VoteType.REJECT;
|
|
297
|
+
if (decision === 'rejected')
|
|
298
|
+
return v.vote === protocol_1.VoteType.APPROVE;
|
|
299
|
+
return false;
|
|
300
|
+
})
|
|
301
|
+
.map(v => v.agentId);
|
|
302
|
+
return {
|
|
303
|
+
clauseId: tally.clauseId,
|
|
304
|
+
decision,
|
|
305
|
+
confidence,
|
|
306
|
+
agreement,
|
|
307
|
+
algorithm: 'bayesian',
|
|
308
|
+
metadata: {
|
|
309
|
+
totalVotes: tally.totalVotes,
|
|
310
|
+
approvals: tally.approvals,
|
|
311
|
+
rejections: tally.rejections,
|
|
312
|
+
abstentions: tally.abstentions,
|
|
313
|
+
quorumMet
|
|
314
|
+
},
|
|
315
|
+
disputedAgents: disputedAgents.length > 0 ? disputedAgents : undefined
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Calculate agreement metrics between agents
|
|
320
|
+
*/
|
|
321
|
+
function calculateAgreementMetrics(votes) {
|
|
322
|
+
const clauseId = votes[0]?.clauseId || '';
|
|
323
|
+
const agentVotes = new Map();
|
|
324
|
+
// Build agent vote map
|
|
325
|
+
for (const vote of votes) {
|
|
326
|
+
agentVotes.set(vote.agentId, vote.vote);
|
|
327
|
+
}
|
|
328
|
+
// Calculate pairwise agreement
|
|
329
|
+
const agentPairs = new Map();
|
|
330
|
+
const agents = Array.from(agentVotes.keys());
|
|
331
|
+
let totalPairs = 0;
|
|
332
|
+
let agreementSum = 0;
|
|
333
|
+
for (let i = 0; i < agents.length; i++) {
|
|
334
|
+
for (let j = i + 1; j < agents.length; j++) {
|
|
335
|
+
const agent1 = agents[i];
|
|
336
|
+
const agent2 = agents[j];
|
|
337
|
+
const vote1 = agentVotes.get(agent1);
|
|
338
|
+
const vote2 = agentVotes.get(agent2);
|
|
339
|
+
if (vote1 === protocol_1.VoteType.ABSTAIN || vote2 === protocol_1.VoteType.ABSTAIN)
|
|
340
|
+
continue;
|
|
341
|
+
const pairKey = `${agent1}:${agent2}`;
|
|
342
|
+
const agrees = vote1 === vote2 ? 1 : 0;
|
|
343
|
+
agentPairs.set(pairKey, agrees);
|
|
344
|
+
agreementSum += agrees;
|
|
345
|
+
totalPairs++;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
const overallAgreement = totalPairs > 0 ? agreementSum / totalPairs : 0;
|
|
349
|
+
// Calculate polarization (variance from mean)
|
|
350
|
+
const approvals = votes.filter(v => v.vote === protocol_1.VoteType.APPROVE).length;
|
|
351
|
+
const rejections = votes.filter(v => v.vote === protocol_1.VoteType.REJECT).length;
|
|
352
|
+
const total = approvals + rejections;
|
|
353
|
+
const approvalRate = total > 0 ? approvals / total : 0.5;
|
|
354
|
+
// Polarization is high when approval rate is near 0.5
|
|
355
|
+
const polarization = 1 - Math.abs(approvalRate - 0.5) * 2;
|
|
356
|
+
// Average confidence
|
|
357
|
+
const avgConfidence = votes.reduce((sum, v) => sum + v.confidence, 0) / votes.length;
|
|
358
|
+
// Check unanimity
|
|
359
|
+
const firstVote = votes.find(v => v.vote !== protocol_1.VoteType.ABSTAIN)?.vote;
|
|
360
|
+
const unanimity = votes
|
|
361
|
+
.filter(v => v.vote !== protocol_1.VoteType.ABSTAIN)
|
|
362
|
+
.every(v => v.vote === firstVote);
|
|
363
|
+
return {
|
|
364
|
+
clauseId,
|
|
365
|
+
agentPairs,
|
|
366
|
+
overallAgreement,
|
|
367
|
+
polarization,
|
|
368
|
+
confidence: avgConfidence,
|
|
369
|
+
unanimity
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
// ========== Helper Functions ==========
|
|
373
|
+
/**
|
|
374
|
+
* Handle tie-breaking logic
|
|
375
|
+
*/
|
|
376
|
+
function handleTieBreaker(tieBreaker, tally) {
|
|
377
|
+
if (tieBreaker === 'approve')
|
|
378
|
+
return 'approved';
|
|
379
|
+
if (tieBreaker === 'reject')
|
|
380
|
+
return 'rejected';
|
|
381
|
+
// For 'proposer' tie-breaker, we'd need the proposer's vote
|
|
382
|
+
// Default to disputed for now
|
|
383
|
+
return 'disputed';
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Calculate confidence for majority consensus
|
|
387
|
+
*/
|
|
388
|
+
function calculateMajorityConfidence(approvals, rejections, total) {
|
|
389
|
+
if (total === 0)
|
|
390
|
+
return 0;
|
|
391
|
+
const winningVotes = Math.max(approvals, rejections);
|
|
392
|
+
const losingVotes = Math.min(approvals, rejections);
|
|
393
|
+
// Confidence is higher when margin is larger
|
|
394
|
+
const margin = (winningVotes - losingVotes) / total;
|
|
395
|
+
const participation = total / (approvals + rejections);
|
|
396
|
+
return (margin * 0.7 + participation * 0.3);
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Calculate confidence for weighted consensus
|
|
400
|
+
*/
|
|
401
|
+
function calculateWeightedConfidence(weightedApprovals, weightedRejections, totalWeight, votes) {
|
|
402
|
+
if (totalWeight === 0)
|
|
403
|
+
return 0;
|
|
404
|
+
const weightedMargin = Math.abs(weightedApprovals - weightedRejections) / totalWeight;
|
|
405
|
+
const avgVoteConfidence = votes.reduce((sum, v) => sum + v.confidence, 0) / votes.length;
|
|
406
|
+
return (weightedMargin * 0.6 + avgVoteConfidence * 0.4);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Calculate agreement metric (how unified the vote is)
|
|
410
|
+
*/
|
|
411
|
+
function calculateAgreement(approvals, rejections, total) {
|
|
412
|
+
if (total === 0)
|
|
413
|
+
return 0;
|
|
414
|
+
// Agreement is high when votes are unified
|
|
415
|
+
const majoritySize = Math.max(approvals, rejections);
|
|
416
|
+
return majoritySize / total;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Calculate Bayesian agreement (how well votes align with posterior)
|
|
420
|
+
*/
|
|
421
|
+
function calculateBayesianAgreement(votes, posteriorApproval) {
|
|
422
|
+
if (votes.length === 0)
|
|
423
|
+
return 0;
|
|
424
|
+
let alignmentSum = 0;
|
|
425
|
+
let voteCount = 0;
|
|
426
|
+
for (const vote of votes) {
|
|
427
|
+
if (vote.vote === protocol_1.VoteType.ABSTAIN)
|
|
428
|
+
continue;
|
|
429
|
+
// How well does this vote align with the posterior?
|
|
430
|
+
const alignment = vote.vote === protocol_1.VoteType.APPROVE ?
|
|
431
|
+
posteriorApproval * vote.confidence :
|
|
432
|
+
(1 - posteriorApproval) * vote.confidence;
|
|
433
|
+
alignmentSum += alignment;
|
|
434
|
+
voteCount++;
|
|
435
|
+
}
|
|
436
|
+
return voteCount > 0 ? alignmentSum / voteCount : 0;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Calculate agent weight based on expertise and vote
|
|
440
|
+
*/
|
|
441
|
+
function calculateAgentWeight(expertise, vote, strategy) {
|
|
442
|
+
if (!expertise) {
|
|
443
|
+
// Default weight for unknown agents
|
|
444
|
+
return vote.confidence * 0.5;
|
|
445
|
+
}
|
|
446
|
+
const baseWeight = expertise.expertiseLevel * expertise.successRate;
|
|
447
|
+
const confidenceWeight = vote.confidence;
|
|
448
|
+
let weight;
|
|
449
|
+
switch (strategy) {
|
|
450
|
+
case 'linear':
|
|
451
|
+
weight = baseWeight * confidenceWeight;
|
|
452
|
+
break;
|
|
453
|
+
case 'exponential':
|
|
454
|
+
// Exponential amplifies expertise differences
|
|
455
|
+
weight = Math.pow(baseWeight, 2) * confidenceWeight;
|
|
456
|
+
break;
|
|
457
|
+
case 'sigmoid':
|
|
458
|
+
// Sigmoid normalizes extreme values
|
|
459
|
+
weight = (1 / (1 + Math.exp(-5 * (baseWeight - 0.5)))) * confidenceWeight;
|
|
460
|
+
break;
|
|
461
|
+
default:
|
|
462
|
+
weight = baseWeight * confidenceWeight;
|
|
463
|
+
}
|
|
464
|
+
return Math.max(0, Math.min(1, weight)); // Clamp to [0, 1]
|
|
465
|
+
}
|
|
466
|
+
// ========== Engine & Factory Classes ==========
|
|
467
|
+
/**
|
|
468
|
+
* ConsensusEngine - Main consensus processing engine
|
|
469
|
+
*
|
|
470
|
+
* Provides a unified interface to all consensus algorithms
|
|
471
|
+
*/
|
|
472
|
+
class ConsensusEngine {
|
|
473
|
+
constructor(config) {
|
|
474
|
+
this.config = config;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Execute consensus based on configured algorithm
|
|
478
|
+
*/
|
|
479
|
+
execute(tally, expertiseMap, priors) {
|
|
480
|
+
switch (this.config.algorithm) {
|
|
481
|
+
case 'majority':
|
|
482
|
+
return majorityConsensus(tally, this.config);
|
|
483
|
+
case 'weighted':
|
|
484
|
+
if (!expertiseMap) {
|
|
485
|
+
throw new Error('Expertise map required for weighted consensus');
|
|
486
|
+
}
|
|
487
|
+
return weightedConsensus(tally, expertiseMap, this.config);
|
|
488
|
+
case 'bayesian':
|
|
489
|
+
if (!expertiseMap || !priors) {
|
|
490
|
+
throw new Error('Expertise map and priors required for Bayesian consensus');
|
|
491
|
+
}
|
|
492
|
+
const prior = priors.get(tally.clauseId);
|
|
493
|
+
if (!prior) {
|
|
494
|
+
throw new Error(`No prior found for clause ${tally.clauseId}`);
|
|
495
|
+
}
|
|
496
|
+
return bayesianConsensus(tally, prior, expertiseMap, this.config);
|
|
497
|
+
default:
|
|
498
|
+
throw new Error(`Unknown algorithm: ${this.config.algorithm}`);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Update configuration
|
|
503
|
+
*/
|
|
504
|
+
updateConfig(config) {
|
|
505
|
+
this.config = { ...this.config, ...config };
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Get current configuration
|
|
509
|
+
*/
|
|
510
|
+
getConfig() {
|
|
511
|
+
return { ...this.config };
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
exports.ConsensusEngine = ConsensusEngine;
|
|
515
|
+
/**
|
|
516
|
+
* ConsensusFactory - Creates consensus engines with preset configurations
|
|
517
|
+
*/
|
|
518
|
+
class ConsensusFactory {
|
|
519
|
+
/**
|
|
520
|
+
* Create a majority consensus engine with default settings
|
|
521
|
+
*/
|
|
522
|
+
static createMajority(overrides) {
|
|
523
|
+
const defaultConfig = {
|
|
524
|
+
algorithm: 'majority',
|
|
525
|
+
minimumQuorum: 3,
|
|
526
|
+
approvalThreshold: 0.5,
|
|
527
|
+
confidenceThreshold: 0.3,
|
|
528
|
+
tieBreaker: 'reject'
|
|
529
|
+
};
|
|
530
|
+
return new ConsensusEngine({ ...defaultConfig, ...overrides });
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Create a weighted consensus engine with default settings
|
|
534
|
+
*/
|
|
535
|
+
static createWeighted(strategy = 'linear', overrides) {
|
|
536
|
+
const defaultConfig = {
|
|
537
|
+
algorithm: 'weighted',
|
|
538
|
+
minimumQuorum: 3,
|
|
539
|
+
approvalThreshold: 0.5,
|
|
540
|
+
confidenceThreshold: 0.3,
|
|
541
|
+
tieBreaker: 'reject',
|
|
542
|
+
weightingStrategy: strategy
|
|
543
|
+
};
|
|
544
|
+
return new ConsensusEngine({ ...defaultConfig, ...overrides });
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Create a Bayesian consensus engine with default settings
|
|
548
|
+
*/
|
|
549
|
+
static createBayesian(priors, overrides) {
|
|
550
|
+
const defaultConfig = {
|
|
551
|
+
algorithm: 'bayesian',
|
|
552
|
+
minimumQuorum: 3,
|
|
553
|
+
approvalThreshold: 0.6,
|
|
554
|
+
confidenceThreshold: 0.4,
|
|
555
|
+
tieBreaker: 'proposer',
|
|
556
|
+
bayesianPriors: priors
|
|
557
|
+
};
|
|
558
|
+
return new ConsensusEngine({ ...defaultConfig, ...overrides });
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* Create a custom consensus engine
|
|
562
|
+
*/
|
|
563
|
+
static createCustom(config) {
|
|
564
|
+
return new ConsensusEngine(config);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
exports.ConsensusFactory = ConsensusFactory;
|
|
568
|
+
//# sourceMappingURL=consensus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus.js","sourceRoot":"","sources":["../../src/voting/consensus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voting orchestration module exports
|
|
3
|
+
* Phase 2 GOAP implementation - Action C8
|
|
4
|
+
*/
|
|
5
|
+
export * from './types.js';
|
|
6
|
+
export * from './panel-assembly.js';
|
|
7
|
+
export * from './consensus.js';
|
|
8
|
+
export * from './orchestrator.js';
|
|
9
|
+
export { VotingOrchestrator } from './orchestrator.js';
|
|
10
|
+
export { PanelAssembler, DefaultVotingStrategy, DefaultAgentPool } from './panel-assembly.js';
|
|
11
|
+
export { ConsensusEngine, ConsensusFactory } from './consensus.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/voting/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EACL,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,gBAAgB,EACjB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Voting orchestration module exports
|
|
4
|
+
* Phase 2 GOAP implementation - Action C8
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
18
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.ConsensusFactory = exports.ConsensusEngine = exports.DefaultAgentPool = exports.DefaultVotingStrategy = exports.PanelAssembler = exports.VotingOrchestrator = void 0;
|
|
22
|
+
__exportStar(require("./types.js"), exports);
|
|
23
|
+
__exportStar(require("./panel-assembly.js"), exports);
|
|
24
|
+
__exportStar(require("./consensus.js"), exports);
|
|
25
|
+
__exportStar(require("./orchestrator.js"), exports);
|
|
26
|
+
// Re-export key classes for convenience
|
|
27
|
+
var orchestrator_js_1 = require("./orchestrator.js");
|
|
28
|
+
Object.defineProperty(exports, "VotingOrchestrator", { enumerable: true, get: function () { return orchestrator_js_1.VotingOrchestrator; } });
|
|
29
|
+
var panel_assembly_js_1 = require("./panel-assembly.js");
|
|
30
|
+
Object.defineProperty(exports, "PanelAssembler", { enumerable: true, get: function () { return panel_assembly_js_1.PanelAssembler; } });
|
|
31
|
+
Object.defineProperty(exports, "DefaultVotingStrategy", { enumerable: true, get: function () { return panel_assembly_js_1.DefaultVotingStrategy; } });
|
|
32
|
+
Object.defineProperty(exports, "DefaultAgentPool", { enumerable: true, get: function () { return panel_assembly_js_1.DefaultAgentPool; } });
|
|
33
|
+
var consensus_js_1 = require("./consensus.js");
|
|
34
|
+
Object.defineProperty(exports, "ConsensusEngine", { enumerable: true, get: function () { return consensus_js_1.ConsensusEngine; } });
|
|
35
|
+
Object.defineProperty(exports, "ConsensusFactory", { enumerable: true, get: function () { return consensus_js_1.ConsensusFactory; } });
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/voting/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,sDAAoC;AACpC,iDAA+B;AAC/B,oDAAkC;AAElC,wCAAwC;AACxC,qDAE2B;AADzB,qHAAA,kBAAkB,OAAA;AAGpB,yDAI6B;AAH3B,mHAAA,cAAc,OAAA;AACd,0HAAA,qBAAqB,OAAA;AACrB,qHAAA,gBAAgB,OAAA;AAGlB,+CAGwB;AAFtB,+GAAA,eAAe,OAAA;AACf,gHAAA,gBAAgB,OAAA"}
|