devflow-ai
Version:
Enterprise-grade AI agent orchestration with swarm management UI dashboard
1,127 lines (969 loc) • 31.3 kB
text/typescript
/**
* Hive-Mind System Integration Interface
*
* This module provides seamless integration with the existing hive-mind system,
* enabling swarms to leverage collective intelligence, shared memory, and
* distributed coordination capabilities while maintaining compatibility
* with the current claude-flow architecture.
*/
import { EventEmitter } from 'node:events';
import { Logger } from '../core/logger.js';
import { generateId } from '../utils/helpers.js';
import { MemoryManager } from '../memory/manager.js';
import type { AdvancedSwarmOrchestrator } from './advanced-orchestrator.js';
import {
SwarmExecutionContext,
SwarmAgent,
SwarmTask,
TaskResult,
SwarmObjective,
AgentState,
SwarmMetrics,
} from './types.js';
export interface HiveMindConfig {
enableSharedIntelligence: boolean;
enableCollectiveMemory: boolean;
enableDistributedLearning: boolean;
enableKnowledgeSharing: boolean;
hiveMindEndpoint?: string;
syncInterval: number;
maxSharedMemorySize: number;
intelligencePoolSize: number;
learningRate: number;
knowledgeRetentionPeriod: number;
}
export interface HiveMindSession {
id: string;
swarmId: string;
participants: string[];
sharedMemory: Map<string, any>;
collectiveIntelligence: CollectiveIntelligence;
knowledgeBase: KnowledgeBase;
distributedLearning: DistributedLearning;
status: 'active' | 'paused' | 'terminated';
startTime: Date;
lastSync: Date;
}
export interface CollectiveIntelligence {
patterns: Map<string, Pattern>;
insights: Map<string, Insight>;
decisions: Map<string, CollectiveDecision>;
predictions: Map<string, Prediction>;
}
export interface Pattern {
id: string;
type: 'behavioral' | 'performance' | 'error' | 'success';
description: string;
frequency: number;
confidence: number;
contexts: string[];
impact: 'low' | 'medium' | 'high';
discoveredBy: string[];
lastSeen: Date;
}
export interface Insight {
id: string;
category: 'optimization' | 'coordination' | 'quality' | 'efficiency';
title: string;
description: string;
evidence: any[];
confidence: number;
applicability: string[];
contributingAgents: string[];
timestamp: Date;
}
export interface CollectiveDecision {
id: string;
question: string;
options: DecisionOption[];
votingResults: Map<string, string>;
consensus: string;
confidence: number;
reasoning: string;
participants: string[];
timestamp: Date;
}
export interface DecisionOption {
id: string;
description: string;
pros: string[];
cons: string[];
risk: 'low' | 'medium' | 'high';
effort: 'low' | 'medium' | 'high';
expectedOutcome: string;
}
export interface Prediction {
id: string;
target: string;
predicted_value: any;
confidence: number;
timeframe: string;
methodology: string;
factors: string[];
accuracy?: number;
createdBy: string[];
timestamp: Date;
}
export interface KnowledgeBase {
facts: Map<string, Fact>;
procedures: Map<string, Procedure>;
bestPractices: Map<string, BestPractice>;
lessons: Map<string, Lesson>;
}
export interface Fact {
id: string;
statement: string;
category: string;
confidence: number;
sources: string[];
validatedBy: string[];
contexts: string[];
timestamp: Date;
}
export interface Procedure {
id: string;
name: string;
description: string;
steps: ProcedureStep[];
preconditions: string[];
postconditions: string[];
successRate: number;
contexts: string[];
lastUsed: Date;
}
export interface ProcedureStep {
order: number;
action: string;
parameters: Record<string, any>;
expectedResult: string;
alternatives: string[];
}
export interface BestPractice {
id: string;
domain: string;
practice: string;
rationale: string;
benefits: string[];
applicableContexts: string[];
effectiveness: number;
adoptionRate: number;
validatedBy: string[];
timestamp: Date;
}
export interface Lesson {
id: string;
title: string;
situation: string;
actions: string[];
outcome: string;
learning: string;
applicability: string[];
importance: 'low' | 'medium' | 'high' | 'critical';
learnedBy: string[];
timestamp: Date;
}
export interface DistributedLearning {
models: Map<string, LearningModel>;
experiences: Map<string, Experience>;
adaptations: Map<string, Adaptation>;
performance: PerformanceTrends;
}
export interface LearningModel {
id: string;
type: 'neural' | 'statistical' | 'heuristic' | 'ensemble';
purpose: string;
parameters: Record<string, any>;
performance: ModelPerformance;
trainingData: string[];
lastUpdated: Date;
version: string;
}
export interface ModelPerformance {
accuracy: number;
precision: number;
recall: number;
f1Score: number;
validationResults: any[];
benchmarkResults: any[];
}
export interface Experience {
id: string;
context: string;
situation: string;
actions: string[];
results: any[];
feedback: number;
tags: string[];
agentId: string;
timestamp: Date;
}
export interface Adaptation {
id: string;
trigger: string;
change: string;
reason: string;
effectiveness: number;
rollbackPlan: string;
approvedBy: string[];
implementedAt: Date;
}
export interface PerformanceTrends {
metrics: Map<string, number[]>;
improvements: string[];
degradations: string[];
stability: number;
trends: TrendAnalysis[];
}
export interface TrendAnalysis {
metric: string;
direction: 'increasing' | 'decreasing' | 'stable' | 'volatile';
magnitude: number;
confidence: number;
timeframe: string;
factors: string[];
}
export class HiveMindIntegration extends EventEmitter {
private logger: Logger;
private config: HiveMindConfig;
private memoryManager: MemoryManager;
private activeSessions: Map<string, HiveMindSession> = new Map();
private globalKnowledgeBase: KnowledgeBase;
private globalIntelligence: CollectiveIntelligence;
private syncInterval?: NodeJS.Timeout;
private isInitialized: boolean = false;
constructor(
config: Partial<HiveMindConfig> = {},
memoryManager: MemoryManager
) {
super();
this.logger = new Logger('HiveMindIntegration');
this.config = this.createDefaultConfig(config);
this.memoryManager = memoryManager;
this.globalKnowledgeBase = this.initializeKnowledgeBase();
this.globalIntelligence = this.initializeCollectiveIntelligence();
this.setupEventHandlers();
}
/**
* Initialize the hive-mind integration
*/
async initialize(): Promise<void> {
if (this.isInitialized) {
this.logger.warn('Hive-mind integration already initialized');
return;
}
this.logger.info('Initializing hive-mind integration...');
try {
// Load existing knowledge base from memory
await this.loadKnowledgeBase();
// Load collective intelligence data
await this.loadCollectiveIntelligence();
// Start synchronization if enabled
if (this.config.syncInterval > 0) {
this.startPeriodicSync();
}
this.isInitialized = true;
this.logger.info('Hive-mind integration initialized successfully');
this.emit('initialized');
} catch (error) {
this.logger.error('Failed to initialize hive-mind integration', error);
throw error;
}
}
/**
* Shutdown the integration gracefully
*/
async shutdown(): Promise<void> {
if (!this.isInitialized) return;
this.logger.info('Shutting down hive-mind integration...');
try {
// Stop synchronization
if (this.syncInterval) {
clearInterval(this.syncInterval);
}
// Save current state
await this.saveKnowledgeBase();
await this.saveCollectiveIntelligence();
// Terminate active sessions
const terminationPromises = Array.from(this.activeSessions.keys())
.map(sessionId => this.terminateSession(sessionId));
await Promise.allSettled(terminationPromises);
this.isInitialized = false;
this.logger.info('Hive-mind integration shut down successfully');
this.emit('shutdown');
} catch (error) {
this.logger.error('Error during hive-mind integration shutdown', error);
throw error;
}
}
/**
* Create a new hive-mind session for a swarm
*/
async createSession(
swarmId: string,
orchestrator: AdvancedSwarmOrchestrator
): Promise<string> {
const sessionId = generateId('hive-session');
this.logger.info('Creating hive-mind session', {
sessionId,
swarmId,
});
const session: HiveMindSession = {
id: sessionId,
swarmId,
participants: [],
sharedMemory: new Map(),
collectiveIntelligence: this.initializeCollectiveIntelligence(),
knowledgeBase: this.initializeKnowledgeBase(),
distributedLearning: this.initializeDistributedLearning(),
status: 'active',
startTime: new Date(),
lastSync: new Date(),
};
this.activeSessions.set(sessionId, session);
// Initialize session with global knowledge
await this.initializeSessionWithGlobalKnowledge(session);
this.emit('session:created', {
sessionId,
swarmId,
});
return sessionId;
}
/**
* Add an agent to a hive-mind session
*/
async addAgentToSession(
sessionId: string,
agentId: string,
agent: SwarmAgent
): Promise<void> {
const session = this.activeSessions.get(sessionId);
if (!session) {
throw new Error(`Hive-mind session not found: ${sessionId}`);
}
if (!session.participants.includes(agentId)) {
session.participants.push(agentId);
this.logger.info('Agent added to hive-mind session', {
sessionId,
agentId,
participantCount: session.participants.length,
});
// Share relevant knowledge with the agent
await this.shareKnowledgeWithAgent(session, agentId, agent);
this.emit('agent:joined', {
sessionId,
agentId,
participantCount: session.participants.length,
});
}
}
/**
* Remove an agent from a hive-mind session
*/
async removeAgentFromSession(
sessionId: string,
agentId: string
): Promise<void> {
const session = this.activeSessions.get(sessionId);
if (!session) {
throw new Error(`Hive-mind session not found: ${sessionId}`);
}
const index = session.participants.indexOf(agentId);
if (index !== -1) {
session.participants.splice(index, 1);
this.logger.info('Agent removed from hive-mind session', {
sessionId,
agentId,
participantCount: session.participants.length,
});
this.emit('agent:left', {
sessionId,
agentId,
participantCount: session.participants.length,
});
}
}
/**
* Share knowledge or experience with the hive-mind
*/
async shareWithHive(
sessionId: string,
agentId: string,
type: 'knowledge' | 'experience' | 'insight' | 'pattern',
data: any
): Promise<void> {
const session = this.activeSessions.get(sessionId);
if (!session) {
throw new Error(`Hive-mind session not found: ${sessionId}`);
}
this.logger.debug('Sharing with hive-mind', {
sessionId,
agentId,
type,
});
switch (type) {
case 'knowledge':
await this.addKnowledge(session, agentId, data);
break;
case 'experience':
await this.addExperience(session, agentId, data);
break;
case 'insight':
await this.addInsight(session, agentId, data);
break;
case 'pattern':
await this.addPattern(session, agentId, data);
break;
}
this.emit('knowledge:shared', {
sessionId,
agentId,
type,
});
}
/**
* Request collective decision making
*/
async requestCollectiveDecision(
sessionId: string,
question: string,
options: DecisionOption[],
requesterAgentId: string
): Promise<string> {
const session = this.activeSessions.get(sessionId);
if (!session) {
throw new Error(`Hive-mind session not found: ${sessionId}`);
}
const decisionId = generateId('decision');
this.logger.info('Requesting collective decision', {
sessionId,
decisionId,
question,
optionCount: options.length,
requesterAgentId,
});
const decision: CollectiveDecision = {
id: decisionId,
question,
options,
votingResults: new Map(),
consensus: '',
confidence: 0,
reasoning: '',
participants: [...session.participants],
timestamp: new Date(),
};
session.collectiveIntelligence.decisions.set(decisionId, decision);
// Initiate voting process
await this.initiateVoting(session, decision);
this.emit('decision:requested', {
sessionId,
decisionId,
question,
});
return decisionId;
}
/**
* Get collective decision result
*/
getCollectiveDecision(sessionId: string, decisionId: string): CollectiveDecision | null {
const session = this.activeSessions.get(sessionId);
if (!session) return null;
return session.collectiveIntelligence.decisions.get(decisionId) || null;
}
/**
* Query the hive-mind knowledge base
*/
async queryKnowledge(
sessionId: string,
query: {
type: 'fact' | 'procedure' | 'bestPractice' | 'lesson';
keywords?: string[];
context?: string;
category?: string;
}
): Promise<any[]> {
const session = this.activeSessions.get(sessionId);
if (!session) {
throw new Error(`Hive-mind session not found: ${sessionId}`);
}
this.logger.debug('Querying hive-mind knowledge', {
sessionId,
query,
});
let results: any[] = [];
switch (query.type) {
case 'fact':
results = this.queryFacts(session, query);
break;
case 'procedure':
results = this.queryProcedures(session, query);
break;
case 'bestPractice':
results = this.queryBestPractices(session, query);
break;
case 'lesson':
results = this.queryLessons(session, query);
break;
}
this.emit('knowledge:queried', {
sessionId,
query,
resultCount: results.length,
});
return results;
}
/**
* Get collective insights for a swarm
*/
getCollectiveInsights(sessionId: string): Insight[] {
const session = this.activeSessions.get(sessionId);
if (!session) return [];
return Array.from(session.collectiveIntelligence.insights.values());
}
/**
* Get identified patterns
*/
getIdentifiedPatterns(sessionId: string): Pattern[] {
const session = this.activeSessions.get(sessionId);
if (!session) return [];
return Array.from(session.collectiveIntelligence.patterns.values());
}
/**
* Get performance predictions
*/
getPerformancePredictions(sessionId: string): Prediction[] {
const session = this.activeSessions.get(sessionId);
if (!session) return [];
return Array.from(session.collectiveIntelligence.predictions.values());
}
/**
* Terminate a hive-mind session
*/
async terminateSession(sessionId: string): Promise<void> {
const session = this.activeSessions.get(sessionId);
if (!session) return;
this.logger.info('Terminating hive-mind session', {
sessionId,
participantCount: session.participants.length,
duration: Date.now() - session.startTime.getTime(),
});
// Save session knowledge to global knowledge base
await this.consolidateSessionKnowledge(session);
// Update status and cleanup
session.status = 'terminated';
this.activeSessions.delete(sessionId);
this.emit('session:terminated', {
sessionId,
duration: Date.now() - session.startTime.getTime(),
});
}
/**
* Get hive-mind session status
*/
getSessionStatus(sessionId: string): HiveMindSession | null {
return this.activeSessions.get(sessionId) || null;
}
/**
* Get integration metrics
*/
getIntegrationMetrics(): {
activeSessions: number;
totalParticipants: number;
knowledgeItems: number;
insights: number;
patterns: number;
decisions: number;
predictions: number;
learningModels: number;
} {
const sessions = Array.from(this.activeSessions.values());
return {
activeSessions: sessions.length,
totalParticipants: sessions.reduce((sum, s) => sum + s.participants.length, 0),
knowledgeItems: this.countKnowledgeItems(),
insights: this.globalIntelligence.insights.size,
patterns: this.globalIntelligence.patterns.size,
decisions: this.globalIntelligence.decisions.size,
predictions: this.globalIntelligence.predictions.size,
learningModels: sessions.reduce((sum, s) => sum + s.distributedLearning.models.size, 0),
};
}
// Private methods
private async loadKnowledgeBase(): Promise<void> {
try {
const knowledgeEntries = await this.memoryManager.retrieve({
namespace: 'hive-mind-knowledge',
type: 'knowledge-base',
});
for (const entry of knowledgeEntries) {
const data = JSON.parse(entry.content);
// Load facts, procedures, best practices, and lessons
this.loadKnowledgeData(data);
}
this.logger.debug('Knowledge base loaded', {
factsCount: this.globalKnowledgeBase.facts.size,
proceduresCount: this.globalKnowledgeBase.procedures.size,
bestPracticesCount: this.globalKnowledgeBase.bestPractices.size,
lessonsCount: this.globalKnowledgeBase.lessons.size,
});
} catch (error) {
this.logger.warn('Failed to load knowledge base, starting fresh', error);
}
}
private async loadCollectiveIntelligence(): Promise<void> {
try {
const intelligenceEntries = await this.memoryManager.retrieve({
namespace: 'hive-mind-intelligence',
type: 'collective-intelligence',
});
for (const entry of intelligenceEntries) {
const data = JSON.parse(entry.content);
this.loadIntelligenceData(data);
}
this.logger.debug('Collective intelligence loaded', {
patternsCount: this.globalIntelligence.patterns.size,
insightsCount: this.globalIntelligence.insights.size,
decisionsCount: this.globalIntelligence.decisions.size,
predictionsCount: this.globalIntelligence.predictions.size,
});
} catch (error) {
this.logger.warn('Failed to load collective intelligence, starting fresh', error);
}
}
private async saveKnowledgeBase(): Promise<void> {
try {
const knowledgeData = {
facts: Array.from(this.globalKnowledgeBase.facts.entries()),
procedures: Array.from(this.globalKnowledgeBase.procedures.entries()),
bestPractices: Array.from(this.globalKnowledgeBase.bestPractices.entries()),
lessons: Array.from(this.globalKnowledgeBase.lessons.entries()),
};
await this.memoryManager.store({
id: `knowledge-base-${Date.now()}`,
agentId: 'hive-mind-integration',
type: 'knowledge-base',
content: JSON.stringify(knowledgeData),
namespace: 'hive-mind-knowledge',
timestamp: new Date(),
metadata: {
type: 'knowledge-base-snapshot',
itemCount: this.countKnowledgeItems(),
},
});
} catch (error) {
this.logger.error('Failed to save knowledge base', error);
}
}
private async saveCollectiveIntelligence(): Promise<void> {
try {
const intelligenceData = {
patterns: Array.from(this.globalIntelligence.patterns.entries()),
insights: Array.from(this.globalIntelligence.insights.entries()),
decisions: Array.from(this.globalIntelligence.decisions.entries()),
predictions: Array.from(this.globalIntelligence.predictions.entries()),
};
await this.memoryManager.store({
id: `collective-intelligence-${Date.now()}`,
agentId: 'hive-mind-integration',
type: 'collective-intelligence',
content: JSON.stringify(intelligenceData),
namespace: 'hive-mind-intelligence',
timestamp: new Date(),
metadata: {
type: 'intelligence-snapshot',
itemCount: this.globalIntelligence.patterns.size +
this.globalIntelligence.insights.size +
this.globalIntelligence.decisions.size +
this.globalIntelligence.predictions.size,
},
});
} catch (error) {
this.logger.error('Failed to save collective intelligence', error);
}
}
private startPeriodicSync(): void {
this.syncInterval = setInterval(async () => {
try {
await this.performPeriodicSync();
} catch (error) {
this.logger.error('Error during periodic sync', error);
}
}, this.config.syncInterval);
}
private async performPeriodicSync(): Promise<void> {
// Sync with external hive-mind endpoint if configured
if (this.config.hiveMindEndpoint) {
// Implementation would sync with external system
this.logger.debug('Performing external hive-mind sync');
}
// Update session knowledge bases
for (const session of this.activeSessions.values()) {
await this.syncSessionKnowledge(session);
session.lastSync = new Date();
}
this.emit('sync:completed', {
sessionsSynced: this.activeSessions.size,
timestamp: new Date(),
});
}
private async initializeSessionWithGlobalKnowledge(session: HiveMindSession): Promise<void> {
// Copy relevant global knowledge to session
for (const [id, fact] of this.globalKnowledgeBase.facts) {
session.knowledgeBase.facts.set(id, fact);
}
for (const [id, insight] of this.globalIntelligence.insights) {
session.collectiveIntelligence.insights.set(id, insight);
}
for (const [id, pattern] of this.globalIntelligence.patterns) {
session.collectiveIntelligence.patterns.set(id, pattern);
}
}
private async shareKnowledgeWithAgent(
session: HiveMindSession,
agentId: string,
agent: SwarmAgent
): Promise<void> {
// Share relevant knowledge based on agent capabilities
const relevantKnowledge = this.getRelevantKnowledge(session, agent.capabilities);
this.logger.debug('Sharing knowledge with agent', {
sessionId: session.id,
agentId,
knowledgeItems: relevantKnowledge.length,
});
// Implementation would send knowledge to agent through MCP tools
}
private getRelevantKnowledge(session: HiveMindSession, capabilities: string[]): any[] {
const relevantItems: any[] = [];
// Filter facts by capabilities
for (const fact of session.knowledgeBase.facts.values()) {
if (capabilities.some(cap => fact.category.includes(cap))) {
relevantItems.push(fact);
}
}
// Filter procedures by capabilities
for (const procedure of session.knowledgeBase.procedures.values()) {
if (capabilities.some(cap => procedure.contexts.includes(cap))) {
relevantItems.push(procedure);
}
}
return relevantItems;
}
private async addKnowledge(session: HiveMindSession, agentId: string, data: any): Promise<void> {
// Add new knowledge item to session
if (data.type === 'fact') {
const fact: Fact = {
id: generateId('fact'),
statement: data.statement,
category: data.category || 'general',
confidence: data.confidence || 0.8,
sources: [agentId],
validatedBy: [agentId],
contexts: data.contexts || [],
timestamp: new Date(),
};
session.knowledgeBase.facts.set(fact.id, fact);
}
// Similar implementations for procedures, best practices, and lessons
}
private async addExperience(session: HiveMindSession, agentId: string, data: any): Promise<void> {
const experience: Experience = {
id: generateId('experience'),
context: data.context || 'general',
situation: data.situation,
actions: data.actions || [],
results: data.results || [],
feedback: data.feedback || 0,
tags: data.tags || [],
agentId,
timestamp: new Date(),
};
session.distributedLearning.experiences.set(experience.id, experience);
}
private async addInsight(session: HiveMindSession, agentId: string, data: any): Promise<void> {
const insight: Insight = {
id: generateId('insight'),
category: data.category || 'optimization',
title: data.title,
description: data.description,
evidence: data.evidence || [],
confidence: data.confidence || 0.7,
applicability: data.applicability || [],
contributingAgents: [agentId],
timestamp: new Date(),
};
session.collectiveIntelligence.insights.set(insight.id, insight);
}
private async addPattern(session: HiveMindSession, agentId: string, data: any): Promise<void> {
const pattern: Pattern = {
id: generateId('pattern'),
type: data.type || 'behavioral',
description: data.description,
frequency: data.frequency || 1,
confidence: data.confidence || 0.7,
contexts: data.contexts || [],
impact: data.impact || 'medium',
discoveredBy: [agentId],
lastSeen: new Date(),
};
session.collectiveIntelligence.patterns.set(pattern.id, pattern);
}
private async initiateVoting(session: HiveMindSession, decision: CollectiveDecision): Promise<void> {
// Implementation would send voting request to all participants
// For now, simulate consensus building
this.logger.debug('Initiating collective voting', {
sessionId: session.id,
decisionId: decision.id,
participantCount: decision.participants.length,
});
// Placeholder implementation - in reality, this would involve
// sophisticated consensus algorithms
setTimeout(() => {
this.processVotingResults(session, decision);
}, 5000);
}
private processVotingResults(session: HiveMindSession, decision: CollectiveDecision): void {
// Placeholder implementation
decision.consensus = decision.options[0].id;
decision.confidence = 0.8;
decision.reasoning = 'Consensus reached through collective voting';
this.emit('decision:completed', {
sessionId: session.id,
decisionId: decision.id,
consensus: decision.consensus,
confidence: decision.confidence,
});
}
private queryFacts(session: HiveMindSession, query: any): Fact[] {
const results: Fact[] = [];
for (const fact of session.knowledgeBase.facts.values()) {
let matches = true;
if (query.category && !fact.category.includes(query.category)) {
matches = false;
}
if (query.keywords && !query.keywords.some(keyword =>
fact.statement.toLowerCase().includes(keyword.toLowerCase()))) {
matches = false;
}
if (query.context && !fact.contexts.includes(query.context)) {
matches = false;
}
if (matches) {
results.push(fact);
}
}
return results;
}
private queryProcedures(session: HiveMindSession, query: any): Procedure[] {
// Similar implementation to queryFacts but for procedures
return Array.from(session.knowledgeBase.procedures.values());
}
private queryBestPractices(session: HiveMindSession, query: any): BestPractice[] {
// Similar implementation to queryFacts but for best practices
return Array.from(session.knowledgeBase.bestPractices.values());
}
private queryLessons(session: HiveMindSession, query: any): Lesson[] {
// Similar implementation to queryFacts but for lessons
return Array.from(session.knowledgeBase.lessons.values());
}
private async consolidateSessionKnowledge(session: HiveMindSession): Promise<void> {
// Merge session knowledge into global knowledge base
for (const [id, fact] of session.knowledgeBase.facts) {
if (!this.globalKnowledgeBase.facts.has(id)) {
this.globalKnowledgeBase.facts.set(id, fact);
}
}
for (const [id, insight] of session.collectiveIntelligence.insights) {
if (!this.globalIntelligence.insights.has(id)) {
this.globalIntelligence.insights.set(id, insight);
}
}
// Similar consolidation for other knowledge types
}
private async syncSessionKnowledge(session: HiveMindSession): Promise<void> {
// Sync session with global knowledge base
// Implementation would handle bidirectional sync
}
private loadKnowledgeData(data: any): void {
// Load knowledge data from stored format
if (data.facts) {
for (const [id, fact] of data.facts) {
this.globalKnowledgeBase.facts.set(id, fact);
}
}
// Similar loading for other knowledge types
}
private loadIntelligenceData(data: any): void {
// Load intelligence data from stored format
if (data.patterns) {
for (const [id, pattern] of data.patterns) {
this.globalIntelligence.patterns.set(id, pattern);
}
}
// Similar loading for other intelligence types
}
private countKnowledgeItems(): number {
return this.globalKnowledgeBase.facts.size +
this.globalKnowledgeBase.procedures.size +
this.globalKnowledgeBase.bestPractices.size +
this.globalKnowledgeBase.lessons.size;
}
private initializeKnowledgeBase(): KnowledgeBase {
return {
facts: new Map(),
procedures: new Map(),
bestPractices: new Map(),
lessons: new Map(),
};
}
private initializeCollectiveIntelligence(): CollectiveIntelligence {
return {
patterns: new Map(),
insights: new Map(),
decisions: new Map(),
predictions: new Map(),
};
}
private initializeDistributedLearning(): DistributedLearning {
return {
models: new Map(),
experiences: new Map(),
adaptations: new Map(),
performance: {
metrics: new Map(),
improvements: [],
degradations: [],
stability: 1.0,
trends: [],
},
};
}
private createDefaultConfig(config: Partial<HiveMindConfig>): HiveMindConfig {
return {
enableSharedIntelligence: true,
enableCollectiveMemory: true,
enableDistributedLearning: true,
enableKnowledgeSharing: true,
syncInterval: 30000, // 30 seconds
maxSharedMemorySize: 100 * 1024 * 1024, // 100MB
intelligencePoolSize: 1000,
learningRate: 0.1,
knowledgeRetentionPeriod: 7 * 24 * 60 * 60 * 1000, // 7 days
...config,
};
}
private setupEventHandlers(): void {
this.on('session:created', (data) => {
this.logger.info('Hive-mind session created', data);
});
this.on('agent:joined', (data) => {
this.logger.info('Agent joined hive-mind', data);
});
this.on('knowledge:shared', (data) => {
this.logger.debug('Knowledge shared with hive-mind', data);
});
this.on('decision:completed', (data) => {
this.logger.info('Collective decision completed', data);
});
}
}
export default HiveMindIntegration;