@sethdouglasford/claude-flow
Version:
Claude Code Flow - Advanced AI-powered development workflows with SPARC methodology
181 lines • 5.25 kB
TypeScript
/**
* Distributed memory system with sharing capabilities
*/
import { EventEmitter } from "node:events";
import { ILogger } from "../core/logger.js";
import { IEventBus } from "../core/event-bus.js";
import { MemoryPartition, MemoryEntry, MemoryType, AccessLevel, ConsistencyLevel, AgentId } from "../swarm/types.js";
export interface DistributedMemoryConfig {
namespace: string;
distributed: boolean;
consistency: ConsistencyLevel;
replicationFactor: number;
syncInterval: number;
maxMemorySize: number;
compressionEnabled: boolean;
encryptionEnabled: boolean;
backupEnabled: boolean;
persistenceEnabled: boolean;
shardingEnabled: boolean;
cacheSize: number;
cacheTtl: number;
}
export interface MemoryNode {
id: string;
address: string;
port: number;
status: "online" | "offline" | "syncing" | "failed";
lastSeen: Date;
partitions: string[];
load: number;
capacity: number;
}
export interface SyncOperation {
id: string;
type: "create" | "update" | "delete" | "batch";
partition: string;
entry?: MemoryEntry;
entries?: MemoryEntry[];
timestamp: Date;
version: number;
origin: string;
targets: string[];
status: "pending" | "in_progress" | "completed" | "failed";
}
export interface MemoryQuery {
namespace?: string;
partition?: string;
type?: MemoryType;
tags?: string[];
owner?: AgentId;
accessLevel?: AccessLevel;
createdAfter?: Date;
updatedAfter?: Date;
limit?: number;
offset?: number;
sortBy?: string;
sortOrder?: "asc" | "desc";
}
export interface MemoryStatistics {
totalEntries: number;
totalSize: number;
partitionCount: number;
nodeCount: number;
replicationHealth: number;
syncOperations: {
pending: number;
completed: number;
failed: number;
};
performance: {
readLatency: number;
writeLatency: number;
syncLatency: number;
throughput: number;
};
utilization: {
memoryUsage: number;
diskUsage: number;
networkUsage: number;
};
}
/**
* Distributed memory system for sharing data across swarm agents
*/
export declare class DistributedMemorySystem extends EventEmitter {
private logger;
private eventBus;
private config;
private partitions;
private entries;
private cache;
private nodes;
private localNodeId;
private syncQueue;
private replicationMap;
private syncInterval?;
private vectorClock;
private conflictResolver?;
private statistics;
private operationMetrics;
constructor(config: Partial<DistributedMemoryConfig>, logger: ILogger, eventBus: IEventBus);
private setupEventHandlers;
initialize(): Promise<void>;
shutdown(): Promise<void>;
createPartition(name: string, type: MemoryType, options?: {
maxSize?: number;
ttl?: number;
readOnly?: boolean;
shared?: boolean;
indexed?: boolean;
compressed?: boolean;
}): Promise<string>;
deletePartition(partitionId: string): Promise<void>;
store(key: string, value: any, options?: {
type?: string;
tags?: string[];
owner?: AgentId;
accessLevel?: AccessLevel;
partition?: string;
ttl?: number;
replicate?: boolean;
}): Promise<string>;
retrieve(key: string, options?: {
partition?: string;
consistency?: ConsistencyLevel;
maxAge?: number;
}): Promise<MemoryEntry | null>;
update(key: string, value: any, options?: {
partition?: string;
merge?: boolean;
version?: number;
}): Promise<boolean>;
deleteEntry(entryId: string): Promise<boolean>;
query(query: MemoryQuery): Promise<MemoryEntry[]>;
private startSynchronization;
private performSync;
private processSyncQueue;
private processValue;
private mergeValues;
private compressValue;
private checkAccess;
private selectPartition;
private getPartitionSize;
private getEntryPartition;
private updateCache;
private getCachedEntry;
private isCacheValid;
private removeFromCache;
private evictCache;
private evictOldEntries;
private matchesQuery;
private getNestedProperty;
private incrementVectorClock;
private recordMetric;
private initializeStatistics;
private updateStatistics;
private replicateEntry;
private syncPartitionCreation;
private syncPartitionDeletion;
private syncEntryUpdate;
private syncEntryDeletion;
private retrieveFromRemote;
private ensureConsistency;
private sendHeartbeat;
private detectAndResolveConflicts;
private executeSyncOperation;
private completePendingSyncOperations;
private loadPersistedData;
private persistData;
private handleSyncRequest;
private handleNodeJoined;
private handleNodeLeft;
private handleConflict;
getStatistics(): MemoryStatistics;
getPartitions(): MemoryPartition[];
getNodes(): MemoryNode[];
backup(): Promise<string>;
restore(backupData: string): Promise<void>;
clear(): Promise<void>;
}
//# sourceMappingURL=distributed-memory.d.ts.map