Files
zCode-CLI-X/.zcode/agents/coordinator/consensus.cjs
admin 68cfeb5cba feat: add zCode Swarm — multi-agent orchestration system
- 6 agent skills: code-review, performance, security, architecture, test, git
- 4 coordinator modes: hierarchical, mesh, gossip, consensus
- Federated memory system (6 namespaces)
- Neural network agent recommendation
- Agent marketplace (plugin discovery/install)
- Real-time dashboard + performance metrics
- CRDT-based sync for decentralized modes
- 22 files, ~1400 lines total

Inspired by ruflo distributed multi-agent patterns.
2026-05-06 07:59:19 +00:00

104 lines
2.4 KiB
JavaScript

/**
* Consensus Coordinator
* Byzantine fault-tolerant coordination
*/
const SwarmUtils = require('./swarm-utils.cjs');
class ConsensusCoordinator {
constructor(swarm) {
this.swarm = swarm;
this.nodes = [];
this.consensus = null;
}
initialize(nodes = []) {
console.log('⚖️ Initializing consensus coordinator...');
this.nodes = nodes;
this.swarm.log('info', `Consensus coordination mode activated with ${nodes.length} nodes`);
// Initialize consensus protocol
this.initializeConsensus();
}
initializeConsensus() {
this.swarm.log('debug', 'Initializing consensus protocol (Byzantine fault-tolerant)');
// Simple consensus: majority voting
this.votes = new Map();
}
async coordinate(task) {
this.swarm.log('info', `Processing task via consensus: ${task}`);
// Collect votes from nodes
const votes = await this.collectVotes(task);
// Achieve consensus
const result = this.achieveConsensus(votes);
return result;
}
async collectVotes(task) {
this.swarm.log('debug', `Collecting votes from ${this.nodes.length} nodes`);
const votes = [];
for (const node of this.nodes) {
const vote = await this.getVote(node, task);
votes.push(vote);
this.swarm.log('info', `Vote received from ${node}: ${vote}`);
}
return votes;
}
async getVote(node, task) {
// Simulate Byzantine fault tolerance
const isByzantine = Math.random() < 0.1; // 10% chance of faulty node
if (isByzantine) {
this.swarm.log('warning', `Byzantine node detected: ${node}`);
return 'reject';
}
return 'accept';
}
achieveConsensus(votes) {
// Majority voting
const acceptCount = votes.filter(v => v === 'accept').length;
const rejectCount = votes.filter(v => v === 'reject').length;
const result = {
agent: 'consensus-aggregated',
success: acceptCount > rejectCount,
timestamp: Date.now(),
votes: {
accept: acceptCount,
reject: rejectCount
},
consensus: acceptCount > rejectCount ? 'reached' : 'failed',
findings: [
'Votes collected',
'Consensus achieved',
'Decision made'
]
};
this.swarm.log('success', `Consensus achieved: ${result.consensus}`);
return result;
}
async stopSync() {
this.swarm.log('info', 'Consensus coordinator stopped');
}
}
module.exports = ConsensusCoordinator;