claude-flow-tbowman01
Version:
Enterprise-grade AI agent orchestration with ruv-swarm integration (Alpha Release)
303 lines • 8.89 kB
TypeScript
/**
* Advanced Memory Management System with comprehensive capabilities
* Includes indexing, compression, cross-agent sharing, and intelligent cleanup
*/
import { EventEmitter } from 'node:events';
import type { ILogger } from '../core/logger.js';
export interface MemoryEntry {
id: string;
key: string;
value: any;
type: string;
namespace: string;
tags: string[];
metadata: Record<string, any>;
owner: string;
accessLevel: 'private' | 'shared' | 'public';
createdAt: Date;
updatedAt: Date;
lastAccessedAt: Date;
expiresAt?: Date;
version: number;
size: number;
compressed: boolean;
checksum: string;
references: string[];
dependencies: string[];
}
export interface MemoryIndex {
keys: Map<string, string[]>;
tags: Map<string, string[]>;
types: Map<string, string[]>;
namespaces: Map<string, string[]>;
owners: Map<string, string[]>;
fullText: Map<string, string[]>;
}
export interface QueryOptions {
namespace?: string;
type?: string;
tags?: string[];
owner?: string;
accessLevel?: 'private' | 'shared' | 'public';
keyPattern?: string;
valueSearch?: string;
fullTextSearch?: string;
createdAfter?: Date;
createdBefore?: Date;
updatedAfter?: Date;
updatedBefore?: Date;
lastAccessedAfter?: Date;
lastAccessedBefore?: Date;
sizeGreaterThan?: number;
sizeLessThan?: number;
includeExpired?: boolean;
limit?: number;
offset?: number;
sortBy?: 'key' | 'createdAt' | 'updatedAt' | 'lastAccessedAt' | 'size' | 'type';
sortOrder?: 'asc' | 'desc';
aggregateBy?: 'namespace' | 'type' | 'owner' | 'tags';
includeMetadata?: boolean;
}
export interface ExportOptions {
format: 'json' | 'csv' | 'xml' | 'yaml';
namespace?: string;
type?: string;
includeMetadata?: boolean;
compression?: boolean;
encryption?: {
enabled: boolean;
algorithm?: string;
key?: string;
};
filtering?: QueryOptions;
}
export interface ImportOptions {
format: 'json' | 'csv' | 'xml' | 'yaml';
namespace?: string;
conflictResolution: 'overwrite' | 'skip' | 'merge' | 'rename';
validation?: boolean;
transformation?: {
keyMapping?: Record<string, string>;
valueTransformation?: (value: any) => any;
metadataExtraction?: (entry: any) => Record<string, any>;
};
dryRun?: boolean;
}
export interface MemoryStatistics {
overview: {
totalEntries: number;
totalSize: number;
compressedEntries: number;
compressionRatio: number;
indexSize: number;
memoryUsage: number;
diskUsage: number;
};
distribution: {
byNamespace: Record<string, {
count: number;
size: number;
}>;
byType: Record<string, {
count: number;
size: number;
}>;
byOwner: Record<string, {
count: number;
size: number;
}>;
byAccessLevel: Record<string, {
count: number;
size: number;
}>;
};
temporal: {
entriesCreatedLast24h: number;
entriesUpdatedLast24h: number;
entriesAccessedLast24h: number;
oldestEntry?: Date;
newestEntry?: Date;
};
performance: {
averageQueryTime: number;
averageWriteTime: number;
cacheHitRatio: number;
indexEfficiency: number;
};
health: {
expiredEntries: number;
orphanedReferences: number;
duplicateKeys: number;
corruptedEntries: number;
recommendedCleanup: boolean;
};
optimization: {
suggestions: string[];
potentialSavings: {
compression: number;
cleanup: number;
deduplication: number;
};
indexOptimization: string[];
};
}
export interface CleanupOptions {
dryRun?: boolean;
removeExpired?: boolean;
removeOlderThan?: number;
removeUnaccessed?: number;
removeOrphaned?: boolean;
removeDuplicates?: boolean;
compressEligible?: boolean;
archiveOld?: {
enabled: boolean;
olderThan: number;
archivePath: string;
};
retentionPolicies?: {
namespace: string;
maxAge?: number;
maxCount?: number;
sizeLimit?: number;
}[];
}
export interface RetentionPolicy {
id: string;
name: string;
namespace?: string;
type?: string;
tags?: string[];
maxAge?: number;
maxCount?: number;
sizeLimit?: number;
priority: number;
enabled: boolean;
}
export declare class AdvancedMemoryManager extends EventEmitter {
private readonly dataPath;
private readonly indexPath;
private readonly backupPath;
private readonly archivePath;
private entries;
private index;
private cache;
private retentionPolicies;
private logger;
private config;
private statistics;
private operationMetrics;
private cleanupInterval?;
constructor(config: Partial<typeof AdvancedMemoryManager.prototype.config> | undefined, logger: ILogger);
initialize(): Promise<void>;
shutdown(): Promise<void>;
store(key: string, value: any, options?: {
namespace?: string;
type?: string;
tags?: string[];
metadata?: Record<string, any>;
owner?: string;
accessLevel?: 'private' | 'shared' | 'public';
ttl?: number;
compress?: boolean;
}): Promise<string>;
retrieve(key: string, options?: {
namespace?: string;
updateLastAccessed?: boolean;
}): Promise<MemoryEntry | null>;
update(key: string, value: any, options?: {
namespace?: string;
merge?: boolean;
updateMetadata?: Record<string, any>;
}): Promise<boolean>;
deleteEntry(entryId: string): Promise<boolean>;
query(options?: QueryOptions): Promise<{
entries: MemoryEntry[];
total: number;
aggregations?: Record<string, any>;
}>;
export(filePath: string, options: ExportOptions): Promise<{
entriesExported: number;
fileSize: number;
checksum: string;
}>;
import(filePath: string, options: ImportOptions): Promise<{
entriesImported: number;
entriesSkipped: number;
entriesUpdated: number;
conflicts: string[];
}>;
getStatistics(): Promise<MemoryStatistics>;
cleanup(options?: CleanupOptions): Promise<{
entriesRemoved: number;
entriesArchived: number;
entriesCompressed: number;
spaceSaved: number;
actions: string[];
}>;
private createEmptyIndex;
private processValue;
private compressValue;
private decompressValue;
private calculateSize;
private calculateChecksum;
private inferType;
private findEntryByKey;
private updateIndex;
private addToIndex;
private removeFromIndex;
private extractWords;
private updateCache;
private evictCache;
private recordMetric;
private initializeStatistics;
private queryWithIndex;
private matchesQuery;
private getPropertyValue;
private generateAggregations;
private aggregateByProperty;
private aggregateByTags;
private prepareJsonExport;
private prepareCsvExport;
private prepareXmlExport;
private prepareYamlExport;
private escapeXml;
private parseJsonImport;
private parseCsvImport;
private parseXmlImport;
private parseYamlImport;
private validateImportData;
private transformImportData;
private importSingleEntry;
private calculateStatistics;
private calculateDistribution;
private calculateIndexSize;
private calculatePerformanceMetrics;
private calculateHealthMetrics;
private generateOptimizationSuggestions;
private findDuplicateKeys;
private applyRetentionPolicies;
private policyMatches;
private enforceRetentionPolicy;
private applyRetentionPolicy;
private cleanupOrphanedReferences;
private removeDuplicateEntries;
private archiveEntries;
private rebuildIndex;
private startAutoCleanup;
private loadPersistedData;
private persistData;
private createBackup;
private cleanOldBackups;
private compressData;
private encryptData;
listNamespaces(): Promise<string[]>;
listTypes(): Promise<string[]>;
listTags(): Promise<string[]>;
getEntryById(id: string): Promise<MemoryEntry | null>;
exists(key: string, namespace?: string): Promise<boolean>;
count(options?: Partial<QueryOptions>): Promise<number>;
clear(namespace?: string): Promise<number>;
getConfiguration(): typeof this.config;
updateConfiguration(updates: Partial<typeof this.config>): Promise<void>;
}
//# sourceMappingURL=advanced-memory-manager.d.ts.map