claude-flow 2.7.1 → 2.7.2

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.
Files changed (76) hide show
  1. package/README.md +83 -22
  2. package/bin/claude-flow +1 -1
  3. package/dist/src/cli/commands/memory.js +64 -1
  4. package/dist/src/cli/commands/memory.js.map +1 -1
  5. package/dist/src/cli/help-formatter.js +3 -5
  6. package/dist/src/cli/help-formatter.js.map +1 -1
  7. package/dist/src/cli/simple-commands/config.js +257 -115
  8. package/dist/src/cli/simple-commands/config.js.map +1 -1
  9. package/dist/src/core/version.js +1 -1
  10. package/dist/src/core/version.js.map +1 -1
  11. package/dist/src/memory/agentdb-adapter.js +214 -0
  12. package/dist/src/memory/agentdb-adapter.js.map +1 -0
  13. package/dist/src/memory/backends/agentdb.js +234 -0
  14. package/dist/src/memory/backends/agentdb.js.map +1 -0
  15. package/dist/src/memory/index.js +11 -2
  16. package/dist/src/memory/index.js.map +1 -1
  17. package/dist/src/memory/migration/legacy-bridge.js +222 -0
  18. package/dist/src/memory/migration/legacy-bridge.js.map +1 -0
  19. package/dist/src/memory/swarm-memory.js +421 -340
  20. package/dist/src/memory/swarm-memory.js.map +1 -1
  21. package/dist/src/utils/key-redactor.js.map +1 -1
  22. package/dist/src/utils/metrics-reader.js.map +1 -1
  23. package/docs/.claude-flow/metrics/performance.json +80 -2
  24. package/docs/.claude-flow/metrics/task-metrics.json +3 -3
  25. package/docs/INDEX.md +37 -12
  26. package/docs/README.md +92 -4
  27. package/docs/agentdb/AGENT3_FINAL_REPORT.md +643 -0
  28. package/docs/agentdb/AGENT3_SUMMARY.md +354 -0
  29. package/docs/agentdb/AGENTDB_INTEGRATION_PLAN.md +1258 -0
  30. package/docs/agentdb/BACKWARD_COMPATIBILITY_GUARANTEE.md +421 -0
  31. package/docs/agentdb/OPTIMIZATION_REPORT.md +360 -0
  32. package/docs/agentdb/PRODUCTION_READINESS.md +499 -0
  33. package/docs/agentdb/PUBLISHING_CHECKLIST.md +364 -0
  34. package/docs/agentdb/README.md +58 -0
  35. package/docs/agentdb/SWARM_COORDINATION.md +393 -0
  36. package/docs/agentdb/SWARM_IMPLEMENTATION_COMPLETE.md +538 -0
  37. package/docs/agentdb/agentdb-integration-summary.md +331 -0
  38. package/docs/agentdb/benchmarks/baseline-report.json +75 -0
  39. package/docs/development/AGENT1_COMPLETION_REPORT.md +466 -0
  40. package/docs/development/README.md +22 -0
  41. package/docs/fixes/PATTERN_FIX_CONFIRMATION.md +513 -0
  42. package/docs/fixes/README.md +33 -0
  43. package/docs/guides/README.md +29 -0
  44. package/docs/integrations/agentic-flow/INTEGRATION-TEST-v1.7.1.md +419 -0
  45. package/docs/integrations/agentic-flow/MIGRATION_v1.7.0.md +381 -0
  46. package/docs/integrations/agentic-flow/README.md +229 -0
  47. package/docs/integrations/agentic-flow/RELEASE-v1.7.0.md +348 -0
  48. package/docs/integrations/agentic-flow/RELEASE-v1.7.1.md +547 -0
  49. package/docs/integrations/agentic-flow/VERIFICATION-v1.7.4.md +556 -0
  50. package/docs/performance/README.md +31 -0
  51. package/docs/releases/ALPHA_TAG_UPDATE.md +150 -0
  52. package/docs/releases/README.md +25 -0
  53. package/docs/{RELEASE-NOTES-v2.7.0-alpha.10.md → releases/v2.7.0-alpha.10/RELEASE-NOTES-v2.7.0-alpha.10.md} +1 -1
  54. package/docs/releases/v2.7.1/RELEASE_SUMMARY_v2.7.1.md +340 -0
  55. package/docs/validation/DOCKER_VERIFICATION_REPORT.md +371 -0
  56. package/docs/validation/README.md +25 -0
  57. package/docs/validation/REGRESSION_ANALYSIS_v2.7.1.md +357 -0
  58. package/package.json +4 -3
  59. package/scripts/fix-agentdb-imports.sh +18 -0
  60. package/scripts/run-docker-regression.sh +101 -0
  61. package/scripts/verify-agentdb-integration.sh +220 -0
  62. package/src/cli/commands/memory.ts +95 -1
  63. package/src/memory/README-AGENTDB.md +366 -0
  64. package/src/memory/agentdb-adapter.js +373 -0
  65. package/src/memory/backends/agentdb.js +360 -0
  66. package/src/memory/index.js +32 -3
  67. package/src/memory/migration/legacy-bridge.js +330 -0
  68. /package/docs/{COMMANDS_TO_SKILLS_MIGRATION.md → development/COMMANDS_TO_SKILLS_MIGRATION.md} +0 -0
  69. /package/docs/{FINAL_INIT_STRUCTURE.md → development/FINAL_INIT_STRUCTURE.md} +0 -0
  70. /package/docs/{CLI-MEMORY-COMMANDS-WORKING.md → fixes/CLI-MEMORY-COMMANDS-WORKING.md} +0 -0
  71. /package/docs/{PATTERN_PERSISTENCE_FIX.md → fixes/PATTERN_PERSISTENCE_FIX.md} +0 -0
  72. /package/docs/{skills-tutorial.md → guides/skills-tutorial.md} +0 -0
  73. /package/docs/{PERFORMANCE-JSON-IMPROVEMENTS.md → performance/PERFORMANCE-JSON-IMPROVEMENTS.md} +0 -0
  74. /package/docs/{PERFORMANCE-METRICS-GUIDE.md → performance/PERFORMANCE-METRICS-GUIDE.md} +0 -0
  75. /package/docs/{RELEASE-NOTES-v2.7.0-alpha.9.md → releases/v2.7.0-alpha.9/RELEASE-NOTES-v2.7.0-alpha.9.md} +0 -0
  76. /package/docs/{RELEASE_v2.7.1.md → releases/v2.7.1/RELEASE_v2.7.1.md} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/memory/swarm-memory.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport { Logger } from '../core/logger.js';\nimport { MemoryManager } from './manager.js';\nimport { EventBus } from '../core/event-bus.js';\nimport { generateId } from '../utils/helpers.js';\nimport * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\n\nexport interface SwarmMemoryEntry {\n id: string;\n agentId: string;\n type: 'knowledge' | 'result' | 'state' | 'communication' | 'error';\n content: any;\n timestamp: Date;\n metadata: {\n taskId?: string;\n objectiveId?: string;\n tags?: string[];\n priority?: number;\n shareLevel?: 'private' | 'team' | 'public';\n };\n}\n\nexport interface SwarmMemoryQuery {\n agentId?: string;\n type?: SwarmMemoryEntry['type'];\n taskId?: string;\n objectiveId?: string;\n tags?: string[];\n since?: Date;\n before?: Date;\n limit?: number;\n shareLevel?: SwarmMemoryEntry['metadata']['shareLevel'];\n}\n\nexport interface SwarmKnowledgeBase {\n id: string;\n name: string;\n description: string;\n entries: SwarmMemoryEntry[];\n metadata: {\n domain: string;\n expertise: string[];\n contributors: string[];\n lastUpdated: Date;\n };\n}\n\nexport interface SwarmMemoryConfig {\n namespace: string;\n enableDistribution: boolean;\n enableReplication: boolean;\n syncInterval: number;\n maxEntries: number;\n compressionThreshold: number;\n enableKnowledgeBase: boolean;\n enableCrossAgentSharing: boolean;\n persistencePath: string;\n}\n\nexport class SwarmMemoryManager extends EventEmitter {\n private logger: Logger;\n private config: SwarmMemoryConfig;\n private baseMemory: MemoryManager;\n private entries: Map<string, SwarmMemoryEntry>;\n private knowledgeBases: Map<string, SwarmKnowledgeBase>;\n private agentMemories: Map<string, Set<string>>; // agentId -> set of entry IDs\n private syncTimer?: NodeJS.Timeout;\n private isInitialized: boolean = false;\n\n constructor(config: Partial<SwarmMemoryConfig> = {}) {\n super();\n this.logger = new Logger('SwarmMemoryManager');\n this.config = {\n namespace: 'swarm',\n enableDistribution: true,\n enableReplication: true,\n syncInterval: 10000, // 10 seconds\n maxEntries: 10000,\n compressionThreshold: 1000,\n enableKnowledgeBase: true,\n enableCrossAgentSharing: true,\n persistencePath: './swarm-memory',\n ...config,\n };\n\n this.entries = new Map();\n this.knowledgeBases = new Map();\n this.agentMemories = new Map();\n\n const eventBus = EventBus.getInstance();\n this.baseMemory = new MemoryManager(\n {\n backend: 'sqlite',\n namespace: this.config.namespace,\n cacheSizeMB: 50,\n syncOnExit: true,\n maxEntries: this.config.maxEntries,\n ttlMinutes: 60,\n },\n eventBus,\n this.logger,\n );\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) return;\n\n this.logger.info('Initializing swarm memory manager...');\n\n // Initialize base memory\n await this.baseMemory.initialize();\n\n // Create persistence directory\n await fs.mkdir(this.config.persistencePath, { recursive: true });\n\n // Load existing memory\n await this.loadMemoryState();\n\n // Start sync timer\n if (this.config.syncInterval > 0) {\n this.syncTimer = setInterval(() => {\n this.syncMemoryState();\n }, this.config.syncInterval);\n }\n\n this.isInitialized = true;\n this.emit('memory:initialized');\n }\n\n async shutdown(): Promise<void> {\n if (!this.isInitialized) return;\n\n this.logger.info('Shutting down swarm memory manager...');\n\n // Stop sync timer\n if (this.syncTimer) {\n clearInterval(this.syncTimer);\n this.syncTimer = undefined;\n }\n\n // Save final state\n await this.saveMemoryState();\n\n this.isInitialized = false;\n this.emit('memory:shutdown');\n }\n\n async remember(\n agentId: string,\n type: SwarmMemoryEntry['type'],\n content: any,\n metadata: Partial<SwarmMemoryEntry['metadata']> = {},\n ): Promise<string> {\n const entryId = generateId('mem');\n const entry: SwarmMemoryEntry = {\n id: entryId,\n agentId,\n type,\n content,\n timestamp: new Date(),\n metadata: {\n shareLevel: 'team',\n priority: 1,\n ...metadata,\n },\n };\n\n this.entries.set(entryId, entry);\n\n // Associate with agent\n if (!this.agentMemories.has(agentId)) {\n this.agentMemories.set(agentId, new Set());\n }\n this.agentMemories.get(agentId)!.add(entryId);\n\n // Store in base memory for persistence\n await this.baseMemory.remember({\n namespace: this.config.namespace,\n key: `entry:${entryId}`,\n content: JSON.stringify(entry),\n metadata: {\n type: 'swarm-memory',\n agentId,\n entryType: type,\n shareLevel: entry.metadata.shareLevel,\n },\n });\n\n this.logger.debug(`Agent ${agentId} remembered: ${type} - ${entryId}`);\n this.emit('memory:added', entry);\n\n // Update knowledge base if applicable\n if (type === 'knowledge' && this.config.enableKnowledgeBase) {\n await this.updateKnowledgeBase(entry);\n }\n\n // Check for memory limits\n await this.enforceMemoryLimits();\n\n return entryId;\n }\n\n async recall(query: SwarmMemoryQuery): Promise<SwarmMemoryEntry[]> {\n let results = Array.from(this.entries.values());\n\n // Apply filters\n if (query.agentId) {\n results = results.filter((e) => e.agentId === query.agentId);\n }\n\n if (query.type) {\n results = results.filter((e) => e.type === query.type);\n }\n\n if (query.taskId) {\n results = results.filter((e) => e.metadata.taskId === query.taskId);\n }\n\n if (query.objectiveId) {\n results = results.filter((e) => e.metadata.objectiveId === query.objectiveId);\n }\n\n if (query.tags && query.tags.length > 0) {\n results = results.filter(\n (e) => e.metadata.tags && query.tags!.some((tag) => e.metadata.tags!.includes(tag)),\n );\n }\n\n if (query.since) {\n results = results.filter((e) => e.timestamp >= query.since!);\n }\n\n if (query.before) {\n results = results.filter((e) => e.timestamp <= query.before!);\n }\n\n if (query.shareLevel) {\n results = results.filter((e) => e.metadata.shareLevel === query.shareLevel);\n }\n\n // Sort by timestamp (newest first)\n results.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());\n\n // Apply limit\n if (query.limit) {\n results = results.slice(0, query.limit);\n }\n\n this.logger.debug(`Recalled ${results.length} memories for query`);\n return results;\n }\n\n async shareMemory(entryId: string, targetAgentId: string): Promise<void> {\n const entry = this.entries.get(entryId);\n if (!entry) {\n throw new Error('Memory entry not found');\n }\n\n if (!this.config.enableCrossAgentSharing) {\n throw new Error('Cross-agent sharing is disabled');\n }\n\n // Check share level permissions\n if (entry.metadata.shareLevel === 'private') {\n throw new Error('Memory entry is private and cannot be shared');\n }\n\n // Create a shared copy for the target agent\n const sharedEntry: SwarmMemoryEntry = {\n ...entry,\n id: generateId('mem'),\n metadata: {\n ...entry.metadata,\n originalId: entryId,\n sharedFrom: entry.agentId,\n sharedTo: targetAgentId,\n sharedAt: new Date(),\n },\n };\n\n this.entries.set(sharedEntry.id, sharedEntry);\n\n // Associate with target agent\n if (!this.agentMemories.has(targetAgentId)) {\n this.agentMemories.set(targetAgentId, new Set());\n }\n this.agentMemories.get(targetAgentId)!.add(sharedEntry.id);\n\n this.logger.info(`Shared memory ${entryId} from ${entry.agentId} to ${targetAgentId}`);\n this.emit('memory:shared', { original: entry, shared: sharedEntry });\n }\n\n async broadcastMemory(entryId: string, agentIds?: string[]): Promise<void> {\n const entry = this.entries.get(entryId);\n if (!entry) {\n throw new Error('Memory entry not found');\n }\n\n if (entry.metadata.shareLevel === 'private') {\n throw new Error('Cannot broadcast private memory');\n }\n\n const targets =\n agentIds || Array.from(this.agentMemories.keys()).filter((id) => id !== entry.agentId);\n\n for (const targetId of targets) {\n try {\n await this.shareMemory(entryId, targetId);\n } catch (error) {\n this.logger.warn(`Failed to share memory to ${targetId}:`, error);\n }\n }\n\n this.logger.info(`Broadcasted memory ${entryId} to ${targets.length} agents`);\n }\n\n async createKnowledgeBase(\n name: string,\n description: string,\n domain: string,\n expertise: string[],\n ): Promise<string> {\n const kbId = generateId('kb');\n const knowledgeBase: SwarmKnowledgeBase = {\n id: kbId,\n name,\n description,\n entries: [],\n metadata: {\n domain,\n expertise,\n contributors: [],\n lastUpdated: new Date(),\n },\n };\n\n this.knowledgeBases.set(kbId, knowledgeBase);\n\n this.logger.info(`Created knowledge base: ${name} (${kbId})`);\n this.emit('knowledgebase:created', knowledgeBase);\n\n return kbId;\n }\n\n async updateKnowledgeBase(entry: SwarmMemoryEntry): Promise<void> {\n if (!this.config.enableKnowledgeBase) return;\n\n // Find relevant knowledge bases\n const relevantKBs = Array.from(this.knowledgeBases.values()).filter((kb) => {\n // Simple matching based on tags and content\n const tags = entry.metadata.tags || [];\n return tags.some((tag) =>\n kb.metadata.expertise.some(\n (exp) =>\n exp.toLowerCase().includes(tag.toLowerCase()) ||\n tag.toLowerCase().includes(exp.toLowerCase()),\n ),\n );\n });\n\n for (const kb of relevantKBs) {\n // Add entry to knowledge base\n kb.entries.push(entry);\n kb.metadata.lastUpdated = new Date();\n\n // Add contributor\n if (!kb.metadata.contributors.includes(entry.agentId)) {\n kb.metadata.contributors.push(entry.agentId);\n }\n\n this.logger.debug(`Updated knowledge base ${kb.id} with entry ${entry.id}`);\n }\n }\n\n async searchKnowledge(\n query: string,\n domain?: string,\n expertise?: string[],\n ): Promise<SwarmMemoryEntry[]> {\n const allEntries: SwarmMemoryEntry[] = [];\n\n // Search in knowledge bases\n for (const kb of this.knowledgeBases.values()) {\n if (domain && kb.metadata.domain !== domain) continue;\n\n if (expertise && !expertise.some((exp) => kb.metadata.expertise.includes(exp))) {\n continue;\n }\n\n allEntries.push(...kb.entries);\n }\n\n // Simple text search (in real implementation, use better search)\n const queryLower = query.toLowerCase();\n const results = allEntries.filter((entry) => {\n const contentStr = JSON.stringify(entry.content).toLowerCase();\n return contentStr.includes(queryLower);\n });\n\n return results.slice(0, 50); // Limit results\n }\n\n async getAgentMemorySnapshot(agentId: string): Promise<{\n totalEntries: number;\n recentEntries: SwarmMemoryEntry[];\n knowledgeContributions: number;\n sharedEntries: number;\n }> {\n const agentEntryIds = this.agentMemories.get(agentId) || new Set();\n const agentEntries = Array.from(agentEntryIds)\n .map((id) => this.entries.get(id))\n .filter(Boolean) as SwarmMemoryEntry[];\n\n const recentEntries = agentEntries\n .sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime())\n .slice(0, 10);\n\n const knowledgeContributions = agentEntries.filter((e) => e.type === 'knowledge').length;\n\n const sharedEntries = agentEntries.filter(\n (e) => e.metadata.shareLevel === 'public' || e.metadata.shareLevel === 'team',\n ).length;\n\n return {\n totalEntries: agentEntries.length,\n recentEntries,\n knowledgeContributions,\n sharedEntries,\n };\n }\n\n private async loadMemoryState(): Promise<void> {\n try {\n // Load entries\n const entriesFile = path.join(this.config.persistencePath, 'entries.json');\n try {\n const entriesData = await fs.readFile(entriesFile, 'utf-8');\n const entriesArray = JSON.parse(entriesData);\n\n for (const entry of entriesArray) {\n this.entries.set(entry.id, {\n ...entry,\n timestamp: new Date(entry.timestamp),\n });\n\n // Rebuild agent memory associations\n if (!this.agentMemories.has(entry.agentId)) {\n this.agentMemories.set(entry.agentId, new Set());\n }\n this.agentMemories.get(entry.agentId)!.add(entry.id);\n }\n\n this.logger.info(`Loaded ${entriesArray.length} memory entries`);\n } catch (error) {\n this.logger.warn('No existing memory entries found');\n }\n\n // Load knowledge bases\n const kbFile = path.join(this.config.persistencePath, 'knowledge-bases.json');\n try {\n const kbData = await fs.readFile(kbFile, 'utf-8');\n const kbArray = JSON.parse(kbData);\n\n for (const kb of kbArray) {\n this.knowledgeBases.set(kb.id, {\n ...kb,\n metadata: {\n ...kb.metadata,\n lastUpdated: new Date(kb.metadata.lastUpdated),\n },\n entries: kb.entries.map((e: any) => ({\n ...e,\n timestamp: new Date(e.timestamp),\n })),\n });\n }\n\n this.logger.info(`Loaded ${kbArray.length} knowledge bases`);\n } catch (error) {\n this.logger.warn('No existing knowledge bases found');\n }\n } catch (error) {\n this.logger.error('Error loading memory state:', error);\n }\n }\n\n private async saveMemoryState(): Promise<void> {\n try {\n // Save entries\n const entriesArray = Array.from(this.entries.values());\n const entriesFile = path.join(this.config.persistencePath, 'entries.json');\n await fs.writeFile(entriesFile, JSON.stringify(entriesArray, null, 2));\n\n // Save knowledge bases\n const kbArray = Array.from(this.knowledgeBases.values());\n const kbFile = path.join(this.config.persistencePath, 'knowledge-bases.json');\n await fs.writeFile(kbFile, JSON.stringify(kbArray, null, 2));\n\n this.logger.debug('Saved memory state to disk');\n } catch (error) {\n this.logger.error('Error saving memory state:', error);\n }\n }\n\n private async syncMemoryState(): Promise<void> {\n try {\n await this.saveMemoryState();\n this.emit('memory:synced');\n } catch (error) {\n this.logger.error('Error syncing memory state:', error);\n }\n }\n\n private async enforceMemoryLimits(): Promise<void> {\n if (this.entries.size <= this.config.maxEntries) return;\n\n this.logger.info('Enforcing memory limits...');\n\n // Remove oldest entries that are not marked as important\n const entries = Array.from(this.entries.values())\n .filter((e) => (e.metadata.priority || 1) <= 1) // Only remove low priority\n .sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());\n\n const toRemove = entries.slice(0, this.entries.size - this.config.maxEntries);\n\n for (const entry of toRemove) {\n this.entries.delete(entry.id);\n\n // Remove from agent memory\n const agentEntries = this.agentMemories.get(entry.agentId);\n if (agentEntries) {\n agentEntries.delete(entry.id);\n }\n\n this.logger.debug(`Removed old memory entry: ${entry.id}`);\n }\n\n this.emit('memory:cleaned', toRemove.length);\n }\n\n // Public API methods\n getMemoryStats(): {\n totalEntries: number;\n entriesByType: Record<string, number>;\n entriesByAgent: Record<string, number>;\n knowledgeBases: number;\n memoryUsage: number;\n } {\n const entries = Array.from(this.entries.values());\n const entriesByType: Record<string, number> = {};\n const entriesByAgent: Record<string, number> = {};\n\n for (const entry of entries) {\n entriesByType[entry.type] = (entriesByType[entry.type] || 0) + 1;\n entriesByAgent[entry.agentId] = (entriesByAgent[entry.agentId] || 0) + 1;\n }\n\n // Rough memory usage calculation\n const memoryUsage = JSON.stringify(entries).length;\n\n return {\n totalEntries: entries.length,\n entriesByType,\n entriesByAgent,\n knowledgeBases: this.knowledgeBases.size,\n memoryUsage,\n };\n }\n\n async exportMemory(agentId?: string): Promise<any> {\n const entries = agentId ? await this.recall({ agentId }) : Array.from(this.entries.values());\n\n return {\n entries,\n knowledgeBases: agentId\n ? Array.from(this.knowledgeBases.values()).filter((kb) =>\n kb.metadata.contributors.includes(agentId),\n )\n : Array.from(this.knowledgeBases.values()),\n exportedAt: new Date(),\n stats: this.getMemoryStats(),\n };\n }\n\n async clearMemory(agentId?: string): Promise<void> {\n if (agentId) {\n // Clear specific agent's memory\n const entryIds = this.agentMemories.get(agentId) || new Set();\n for (const entryId of entryIds) {\n this.entries.delete(entryId);\n }\n this.agentMemories.delete(agentId);\n this.logger.info(`Cleared memory for agent ${agentId}`);\n } else {\n // Clear all memory\n this.entries.clear();\n this.agentMemories.clear();\n this.knowledgeBases.clear();\n this.logger.info('Cleared all swarm memory');\n }\n\n this.emit('memory:cleared', { agentId });\n }\n\n // Compatibility methods for hive.ts\n async store(key: string, value: any): Promise<void> {\n // Extract namespace and actual key from the path\n const parts = key.split('/');\n const type = (parts[0] as SwarmMemoryEntry['type']) || 'state';\n const agentId = parts[1] || 'system';\n\n await this.remember(agentId, type, value, {\n tags: [parts[0], parts[1]].filter(Boolean),\n shareLevel: 'team',\n });\n }\n\n async search(pattern: string, limit: number = 10): Promise<any[]> {\n // Simple pattern matching on stored keys/content\n const results: any[] = [];\n\n for (const entry of this.entries.values()) {\n const entryString = JSON.stringify(entry);\n if (entryString.includes(pattern.replace('*', ''))) {\n results.push(entry.content);\n if (results.length >= limit) break;\n }\n }\n\n return results;\n }\n}\n"],"names":["EventEmitter","Logger","MemoryManager","EventBus","generateId","fs","path","SwarmMemoryManager","logger","config","baseMemory","entries","knowledgeBases","agentMemories","syncTimer","isInitialized","namespace","enableDistribution","enableReplication","syncInterval","maxEntries","compressionThreshold","enableKnowledgeBase","enableCrossAgentSharing","persistencePath","Map","eventBus","getInstance","backend","cacheSizeMB","syncOnExit","ttlMinutes","initialize","info","mkdir","recursive","loadMemoryState","setInterval","syncMemoryState","emit","shutdown","clearInterval","undefined","saveMemoryState","remember","agentId","type","content","metadata","entryId","entry","id","timestamp","Date","shareLevel","priority","set","has","Set","get","add","key","JSON","stringify","entryType","debug","updateKnowledgeBase","enforceMemoryLimits","recall","query","results","Array","from","values","filter","e","taskId","objectiveId","tags","length","some","tag","includes","since","before","sort","a","b","getTime","limit","slice","shareMemory","targetAgentId","Error","sharedEntry","originalId","sharedFrom","sharedTo","sharedAt","original","shared","broadcastMemory","agentIds","targets","keys","targetId","error","warn","createKnowledgeBase","name","description","domain","expertise","kbId","knowledgeBase","contributors","lastUpdated","relevantKBs","kb","exp","toLowerCase","push","searchKnowledge","allEntries","queryLower","contentStr","getAgentMemorySnapshot","agentEntryIds","agentEntries","map","Boolean","recentEntries","knowledgeContributions","sharedEntries","totalEntries","entriesFile","join","entriesData","readFile","entriesArray","parse","kbFile","kbData","kbArray","writeFile","size","toRemove","delete","getMemoryStats","entriesByType","entriesByAgent","memoryUsage","exportMemory","exportedAt","stats","clearMemory","entryIds","clear","store","value","parts","split","search","pattern","entryString","replace"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/memory/swarm-memory.js"],"sourcesContent":["/**\n * SwarmMemory - MCP-specific memory persistence extending SharedMemory\n * Provides swarm-specific features like agent coordination, task tracking, and neural patterns\n *\n * @module swarm-memory\n */\n\nimport { SharedMemory } from './shared-memory.js';\nimport path from 'path';\n\n/**\n * Swarm-specific namespaces\n */\nconst SWARM_NAMESPACES = {\n AGENTS: 'swarm:agents',\n TASKS: 'swarm:tasks',\n COMMUNICATIONS: 'swarm:communications',\n CONSENSUS: 'swarm:consensus',\n PATTERNS: 'swarm:patterns',\n METRICS: 'swarm:metrics',\n COORDINATION: 'swarm:coordination',\n};\n\n/**\n * SwarmMemory class - Extends SharedMemory with MCP features\n */\nexport class SwarmMemory extends SharedMemory {\n constructor(options = {}) {\n // Default to .swarm directory for MCP\n super({\n directory: options.directory || '.swarm',\n filename: options.filename || 'swarm-memory.db',\n ...options,\n });\n\n this.swarmId = options.swarmId || 'default';\n this.mcpMode = options.mcpMode !== false;\n\n // Additional swarm-specific caches\n this.agentCache = new Map();\n this.taskCache = new Map();\n this.patternCache = new Map();\n }\n\n /**\n * Initialize with swarm-specific setup\n */\n async initialize() {\n await super.initialize();\n\n // Initialize swarm-specific namespaces\n await this._initializeSwarmNamespaces();\n\n // Load active agents and tasks into cache\n await this._loadSwarmState();\n\n this.emit('swarm:initialized', { swarmId: this.swarmId });\n }\n\n /**\n * Store agent information\n */\n async storeAgent(agentId, agentData) {\n const key = `agent:${agentId}`;\n const enrichedData = {\n ...agentData,\n swarmId: this.swarmId,\n lastUpdated: new Date().toISOString(),\n };\n\n await this.store(key, enrichedData, {\n namespace: SWARM_NAMESPACES.AGENTS,\n tags: ['agent', agentData.type, agentData.status],\n metadata: {\n swarmId: this.swarmId,\n agentType: agentData.type,\n },\n });\n\n // Update agent cache\n this.agentCache.set(agentId, enrichedData);\n\n this.emit('swarm:agentStored', { agentId, type: agentData.type });\n\n return { agentId, stored: true };\n }\n\n /**\n * Retrieve agent information\n */\n async getAgent(agentId) {\n // Check cache first\n if (this.agentCache.has(agentId)) {\n return this.agentCache.get(agentId);\n }\n\n const key = `agent:${agentId}`;\n const agent = await this.retrieve(key, SWARM_NAMESPACES.AGENTS);\n\n if (agent) {\n this.agentCache.set(agentId, agent);\n }\n\n return agent;\n }\n\n /**\n * List all agents in swarm\n */\n async listAgents(filter = {}) {\n const agents = await this.list(SWARM_NAMESPACES.AGENTS, {\n limit: filter.limit || 100,\n });\n\n return agents\n .map((entry) => entry.value)\n .filter((agent) => {\n if (filter.type && agent.type !== filter.type) return false;\n if (filter.status && agent.status !== filter.status) return false;\n if (filter.swarmId && agent.swarmId !== filter.swarmId) return false;\n return true;\n });\n }\n\n /**\n * Store task information\n */\n async storeTask(taskId, taskData) {\n const key = `task:${taskId}`;\n const enrichedData = {\n ...taskData,\n swarmId: this.swarmId,\n createdAt: taskData.createdAt || new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n await this.store(key, enrichedData, {\n namespace: SWARM_NAMESPACES.TASKS,\n tags: ['task', taskData.status, taskData.priority],\n metadata: {\n swarmId: this.swarmId,\n assignedAgents: taskData.assignedAgents || [],\n },\n });\n\n // Update task cache\n this.taskCache.set(taskId, enrichedData);\n\n this.emit('swarm:taskStored', { taskId, status: taskData.status });\n\n return { taskId, stored: true };\n }\n\n /**\n * Update task status\n */\n async updateTaskStatus(taskId, status, result = null) {\n const task = await this.getTask(taskId);\n if (!task) {\n throw new Error(`Task ${taskId} not found`);\n }\n\n task.status = status;\n task.updatedAt = new Date().toISOString();\n\n if (result) {\n task.result = result;\n }\n\n if (status === 'completed') {\n task.completedAt = new Date().toISOString();\n }\n\n await this.storeTask(taskId, task);\n\n this.emit('swarm:taskStatusUpdated', { taskId, status });\n\n return { taskId, status, updated: true };\n }\n\n /**\n * Get task information\n */\n async getTask(taskId) {\n // Check cache first\n if (this.taskCache.has(taskId)) {\n return this.taskCache.get(taskId);\n }\n\n const key = `task:${taskId}`;\n const task = await this.retrieve(key, SWARM_NAMESPACES.TASKS);\n\n if (task) {\n this.taskCache.set(taskId, task);\n }\n\n return task;\n }\n\n /**\n * Store inter-agent communication\n */\n async storeCommunication(fromAgent, toAgent, message) {\n const commId = `comm:${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n const communication = {\n id: commId,\n fromAgent,\n toAgent,\n message,\n swarmId: this.swarmId,\n timestamp: new Date().toISOString(),\n };\n\n await this.store(commId, communication, {\n namespace: SWARM_NAMESPACES.COMMUNICATIONS,\n ttl: 86400, // 24 hours\n tags: ['communication', message.type],\n metadata: {\n fromAgent,\n toAgent,\n messageType: message.type,\n },\n });\n\n this.emit('swarm:communication', { fromAgent, toAgent, type: message.type });\n\n return { id: commId, stored: true };\n }\n\n /**\n * Store consensus decision\n */\n async storeConsensus(consensusId, decision) {\n const key = `consensus:${consensusId}`;\n const consensusData = {\n ...decision,\n swarmId: this.swarmId,\n timestamp: new Date().toISOString(),\n };\n\n await this.store(key, consensusData, {\n namespace: SWARM_NAMESPACES.CONSENSUS,\n tags: ['consensus', decision.status],\n metadata: {\n swarmId: this.swarmId,\n taskId: decision.taskId,\n threshold: decision.threshold,\n },\n });\n\n this.emit('swarm:consensus', { consensusId, status: decision.status });\n\n return { consensusId, stored: true };\n }\n\n /**\n * Store neural pattern\n */\n async storePattern(patternId, pattern) {\n const key = `pattern:${patternId}`;\n const patternData = {\n ...pattern,\n swarmId: this.swarmId,\n createdAt: new Date().toISOString(),\n usageCount: 0,\n successRate: 0,\n };\n\n await this.store(key, patternData, {\n namespace: SWARM_NAMESPACES.PATTERNS,\n tags: ['pattern', pattern.type],\n metadata: {\n swarmId: this.swarmId,\n patternType: pattern.type,\n confidence: pattern.confidence || 0,\n },\n });\n\n // Cache frequently used patterns\n if (pattern.type === 'coordination' || pattern.type === 'optimization') {\n this.patternCache.set(patternId, patternData);\n }\n\n this.emit('swarm:patternStored', { patternId, type: pattern.type });\n\n return { patternId, stored: true };\n }\n\n /**\n * Update pattern usage and success metrics\n */\n async updatePatternMetrics(patternId, success = true) {\n const pattern = await this.getPattern(patternId);\n if (!pattern) {\n throw new Error(`Pattern ${patternId} not found`);\n }\n\n pattern.usageCount++;\n pattern.lastUsedAt = new Date().toISOString();\n\n // Update success rate with exponential moving average\n const alpha = 0.1; // Smoothing factor\n const currentSuccess = success ? 1 : 0;\n pattern.successRate = alpha * currentSuccess + (1 - alpha) * (pattern.successRate || 0);\n\n await this.storePattern(patternId, pattern);\n\n return { patternId, usageCount: pattern.usageCount, successRate: pattern.successRate };\n }\n\n /**\n * Get pattern\n */\n async getPattern(patternId) {\n // Check cache first\n if (this.patternCache.has(patternId)) {\n return this.patternCache.get(patternId);\n }\n\n const key = `pattern:${patternId}`;\n return await this.retrieve(key, SWARM_NAMESPACES.PATTERNS);\n }\n\n /**\n * Find best patterns for a given context\n */\n async findBestPatterns(context, limit = 5) {\n const patterns = await this.search({\n namespace: SWARM_NAMESPACES.PATTERNS,\n tags: context.tags,\n limit: 100,\n });\n\n // Score patterns based on success rate and relevance\n const scored = patterns.map((entry) => {\n const pattern = entry.value;\n const score =\n pattern.successRate * 0.7 +\n (pattern.confidence || 0) * 0.2 +\n (pattern.usageCount > 0 ? 0.1 : 0);\n\n return { ...pattern, score };\n });\n\n // Sort by score and return top patterns\n return scored.sort((a, b) => b.score - a.score).slice(0, limit);\n }\n\n /**\n * Store coordination state\n */\n async storeCoordination(key, state) {\n await this.store(key, state, {\n namespace: SWARM_NAMESPACES.COORDINATION,\n ttl: 3600, // 1 hour\n metadata: {\n swarmId: this.swarmId,\n timestamp: new Date().toISOString(),\n },\n });\n\n return { key, stored: true };\n }\n\n /**\n * Get coordination state\n */\n async getCoordination(key) {\n return await this.retrieve(key, SWARM_NAMESPACES.COORDINATION);\n }\n\n /**\n * Store performance metrics\n */\n async storeMetrics(metricsId, metrics) {\n const key = `metrics:${metricsId}`;\n await this.store(key, metrics, {\n namespace: SWARM_NAMESPACES.METRICS,\n ttl: 86400 * 7, // 7 days\n tags: ['metrics', metrics.type],\n metadata: {\n swarmId: this.swarmId,\n agentId: metrics.agentId,\n timestamp: new Date().toISOString(),\n },\n });\n\n this.emit('swarm:metricsStored', { metricsId, type: metrics.type });\n\n return { metricsId, stored: true };\n }\n\n /**\n * Get swarm statistics\n */\n async getSwarmStats() {\n const baseStats = await this.getStats();\n\n // Add swarm-specific stats\n const agentCount = await this._countNamespace(SWARM_NAMESPACES.AGENTS);\n const taskCount = await this._countNamespace(SWARM_NAMESPACES.TASKS);\n const patternCount = await this._countNamespace(SWARM_NAMESPACES.PATTERNS);\n\n // Get active agents\n const activeAgents = Array.from(this.agentCache.values()).filter(\n (agent) => agent.status === 'active' || agent.status === 'busy',\n ).length;\n\n // Get task statistics\n const tasks = Array.from(this.taskCache.values());\n const taskStats = {\n total: tasks.length,\n pending: tasks.filter((t) => t.status === 'pending').length,\n inProgress: tasks.filter((t) => t.status === 'in_progress').length,\n completed: tasks.filter((t) => t.status === 'completed').length,\n failed: tasks.filter((t) => t.status === 'failed').length,\n };\n\n return {\n ...baseStats,\n swarm: {\n swarmId: this.swarmId,\n agents: {\n total: agentCount,\n active: activeAgents,\n cached: this.agentCache.size,\n },\n tasks: taskStats,\n patterns: {\n total: patternCount,\n cached: this.patternCache.size,\n },\n namespaces: Object.values(SWARM_NAMESPACES),\n },\n };\n }\n\n /**\n * Clean up old swarm data\n */\n async cleanupSwarmData(options = {}) {\n const {\n maxAge = 86400 * 7, // 7 days\n keepPatterns = true,\n keepConsensus = true,\n } = options;\n\n const cutoffTime = Date.now() - maxAge * 1000;\n let cleaned = 0;\n\n // Clean old communications\n const comms = await this.list(SWARM_NAMESPACES.COMMUNICATIONS);\n for (const comm of comms) {\n if (new Date(comm.value.timestamp).getTime() < cutoffTime) {\n await this.delete(comm.key, SWARM_NAMESPACES.COMMUNICATIONS);\n cleaned++;\n }\n }\n\n // Clean completed tasks\n const tasks = await this.list(SWARM_NAMESPACES.TASKS);\n for (const task of tasks) {\n if (\n task.value.status === 'completed' &&\n new Date(task.value.completedAt).getTime() < cutoffTime\n ) {\n await this.delete(task.key, SWARM_NAMESPACES.TASKS);\n this.taskCache.delete(task.value.id);\n cleaned++;\n }\n }\n\n // Clean old metrics\n const metrics = await this.list(SWARM_NAMESPACES.METRICS);\n for (const metric of metrics) {\n if (new Date(metric.createdAt).getTime() < cutoffTime) {\n await this.delete(metric.key, SWARM_NAMESPACES.METRICS);\n cleaned++;\n }\n }\n\n this.emit('swarm:cleanup', { cleaned, maxAge });\n\n return { cleaned };\n }\n\n /**\n * Export swarm state\n */\n async exportSwarmState() {\n const agents = await this.listAgents();\n const tasks = Array.from(this.taskCache.values());\n const patterns = await this.list(SWARM_NAMESPACES.PATTERNS);\n\n return {\n swarmId: this.swarmId,\n exportedAt: new Date().toISOString(),\n agents: agents,\n tasks: tasks,\n patterns: patterns.map((p) => p.value),\n statistics: await this.getSwarmStats(),\n };\n }\n\n /**\n * Import swarm state\n */\n async importSwarmState(state) {\n let imported = {\n agents: 0,\n tasks: 0,\n patterns: 0,\n };\n\n // Import agents\n if (state.agents) {\n for (const agent of state.agents) {\n await this.storeAgent(agent.id, agent);\n imported.agents++;\n }\n }\n\n // Import tasks\n if (state.tasks) {\n for (const task of state.tasks) {\n await this.storeTask(task.id, task);\n imported.tasks++;\n }\n }\n\n // Import patterns\n if (state.patterns) {\n for (const pattern of state.patterns) {\n await this.storePattern(pattern.id, pattern);\n imported.patterns++;\n }\n }\n\n this.emit('swarm:imported', imported);\n\n return imported;\n }\n\n /**\n * Private helper methods\n */\n\n async _initializeSwarmNamespaces() {\n // Create swarm metadata\n await this.store(\n 'swarm:metadata',\n {\n swarmId: this.swarmId,\n createdAt: new Date().toISOString(),\n version: '1.0.0',\n namespaces: Object.values(SWARM_NAMESPACES),\n },\n {\n namespace: 'swarm:system',\n },\n );\n }\n\n async _loadSwarmState() {\n // Load active agents\n const agents = await this.list(SWARM_NAMESPACES.AGENTS, { limit: 100 });\n for (const entry of agents) {\n if (entry.value.status === 'active' || entry.value.status === 'busy') {\n this.agentCache.set(entry.value.id, entry.value);\n }\n }\n\n // Load in-progress tasks\n const tasks = await this.search({\n namespace: SWARM_NAMESPACES.TASKS,\n tags: ['in_progress'],\n limit: 100,\n });\n for (const entry of tasks) {\n this.taskCache.set(entry.value.id, entry.value);\n }\n\n // Load high-confidence patterns\n const patterns = await this.list(SWARM_NAMESPACES.PATTERNS, { limit: 50 });\n for (const entry of patterns) {\n if (entry.value.confidence > 0.7 || entry.value.successRate > 0.8) {\n this.patternCache.set(entry.value.id, entry.value);\n }\n }\n }\n\n async _countNamespace(namespace) {\n const stats = await this.getStats();\n return stats.namespaces[namespace]?.count || 0;\n }\n}\n\n// Export factory function for easy creation\nexport function createSwarmMemory(options = {}) {\n return new SwarmMemory(options);\n}\n\n// Export for backwards compatibility\nexport default SwarmMemory;\n"],"names":["SharedMemory","SWARM_NAMESPACES","AGENTS","TASKS","COMMUNICATIONS","CONSENSUS","PATTERNS","METRICS","COORDINATION","SwarmMemory","options","directory","filename","swarmId","mcpMode","agentCache","Map","taskCache","patternCache","initialize","_initializeSwarmNamespaces","_loadSwarmState","emit","storeAgent","agentId","agentData","key","enrichedData","lastUpdated","Date","toISOString","store","namespace","tags","type","status","metadata","agentType","set","stored","getAgent","has","get","agent","retrieve","listAgents","filter","agents","list","limit","map","entry","value","storeTask","taskId","taskData","createdAt","updatedAt","priority","assignedAgents","updateTaskStatus","result","task","getTask","Error","completedAt","updated","storeCommunication","fromAgent","toAgent","message","commId","now","Math","random","toString","substr","communication","id","timestamp","ttl","messageType","storeConsensus","consensusId","decision","consensusData","threshold","storePattern","patternId","pattern","patternData","usageCount","successRate","patternType","confidence","updatePatternMetrics","success","getPattern","lastUsedAt","alpha","currentSuccess","findBestPatterns","context","patterns","search","scored","score","sort","a","b","slice","storeCoordination","state","getCoordination","storeMetrics","metricsId","metrics","getSwarmStats","baseStats","getStats","agentCount","_countNamespace","taskCount","patternCount","activeAgents","Array","from","values","length","tasks","taskStats","total","pending","t","inProgress","completed","failed","swarm","active","cached","size","namespaces","Object","cleanupSwarmData","maxAge","keepPatterns","keepConsensus","cutoffTime","cleaned","comms","comm","getTime","delete","metric","exportSwarmState","exportedAt","p","statistics","importSwarmState","imported","version","stats","count","createSwarmMemory"],"mappings":"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"}AAM,CAAC,eAAe,CAAC;YACjE,EAAE,OAAO2B,OAAO;gBACd,IAAI,CAAClG,MAAM,CAACmG,IAAI,CAAC;YACnB;YAGA,MAAMkC,SAASvI,KAAKkI,IAAI,CAAC,IAAI,CAAC/H,MAAM,CAACe,eAAe,EAAE;YACtD,IAAI;gBACF,MAAMsH,SAAS,MAAMzI,GAAGqI,QAAQ,CAACG,QAAQ;gBACzC,MAAME,UAAUjF,KAAK8E,KAAK,CAACE;gBAE3B,KAAK,MAAMxB,MAAMyB,QAAS;oBACxB,IAAI,CAACnI,cAAc,CAAC4C,GAAG,CAAC8D,GAAGnE,EAAE,EAAE;wBAC7B,GAAGmE,EAAE;wBACLtE,UAAU;4BACR,GAAGsE,GAAGtE,QAAQ;4BACdoE,aAAa,IAAI/D,KAAKiE,GAAGtE,QAAQ,CAACoE,WAAW;wBAC/C;wBACAzG,SAAS2G,GAAG3G,OAAO,CAACsH,GAAG,CAAC,CAACtD,IAAY,CAAA;gCACnC,GAAGA,CAAC;gCACJvB,WAAW,IAAIC,KAAKsB,EAAEvB,SAAS;4BACjC,CAAA;oBACF;gBACF;gBAEA,IAAI,CAAC5C,MAAM,CAACyB,IAAI,CAAC,CAAC,OAAO,EAAE8G,QAAQhE,MAAM,CAAC,gBAAgB,CAAC;YAC7D,EAAE,OAAO2B,OAAO;gBACd,IAAI,CAAClG,MAAM,CAACmG,IAAI,CAAC;YACnB;QACF,EAAE,OAAOD,OAAO;YACd,IAAI,CAAClG,MAAM,CAACkG,KAAK,CAAC,+BAA+BA;QACnD;IACF;IAEA,MAAc/D,kBAAiC;QAC7C,IAAI;YAEF,MAAMgG,eAAepE,MAAMC,IAAI,CAAC,IAAI,CAAC7D,OAAO,CAAC8D,MAAM;YACnD,MAAM8D,cAAcjI,KAAKkI,IAAI,CAAC,IAAI,CAAC/H,MAAM,CAACe,eAAe,EAAE;YAC3D,MAAMnB,GAAG2I,SAAS,CAACT,aAAazE,KAAKC,SAAS,CAAC4E,cAAc,MAAM;YAGnE,MAAMI,UAAUxE,MAAMC,IAAI,CAAC,IAAI,CAAC5D,cAAc,CAAC6D,MAAM;YACrD,MAAMoE,SAASvI,KAAKkI,IAAI,CAAC,IAAI,CAAC/H,MAAM,CAACe,eAAe,EAAE;YACtD,MAAMnB,GAAG2I,SAAS,CAACH,QAAQ/E,KAAKC,SAAS,CAACgF,SAAS,MAAM;YAEzD,IAAI,CAACvI,MAAM,CAACyD,KAAK,CAAC;QACpB,EAAE,OAAOyC,OAAO;YACd,IAAI,CAAClG,MAAM,CAACkG,KAAK,CAAC,8BAA8BA;QAClD;IACF;IAEA,MAAcpE,kBAAiC;QAC7C,IAAI;YACF,MAAM,IAAI,CAACK,eAAe;YAC1B,IAAI,CAACJ,IAAI,CAAC;QACZ,EAAE,OAAOmE,OAAO;YACd,IAAI,CAAClG,MAAM,CAACkG,KAAK,CAAC,+BAA+BA;QACnD;IACF;IAEA,MAAcvC,sBAAqC;QACjD,IAAI,IAAI,CAACxD,OAAO,CAACsI,IAAI,IAAI,IAAI,CAACxI,MAAM,CAACW,UAAU,EAAE;QAEjD,IAAI,CAACZ,MAAM,CAACyB,IAAI,CAAC;QAGjB,MAAMtB,UAAU4D,MAAMC,IAAI,CAAC,IAAI,CAAC7D,OAAO,CAAC8D,MAAM,IAC3CC,MAAM,CAAC,CAACC,IAAM,AAACA,CAAAA,EAAE3B,QAAQ,CAACO,QAAQ,IAAI,CAAA,KAAM,GAC5C8B,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAElC,SAAS,CAACoC,OAAO,KAAKD,EAAEnC,SAAS,CAACoC,OAAO;QAE7D,MAAM0D,WAAWvI,QAAQ+E,KAAK,CAAC,GAAG,IAAI,CAAC/E,OAAO,CAACsI,IAAI,GAAG,IAAI,CAACxI,MAAM,CAACW,UAAU;QAE5E,KAAK,MAAM8B,SAASgG,SAAU;YAC5B,IAAI,CAACvI,OAAO,CAACwI,MAAM,CAACjG,MAAMC,EAAE;YAG5B,MAAM6E,eAAe,IAAI,CAACnH,aAAa,CAAC8C,GAAG,CAACT,MAAML,OAAO;YACzD,IAAImF,cAAc;gBAChBA,aAAamB,MAAM,CAACjG,MAAMC,EAAE;YAC9B;YAEA,IAAI,CAAC3C,MAAM,CAACyD,KAAK,CAAC,CAAC,0BAA0B,EAAEf,MAAMC,EAAE,EAAE;QAC3D;QAEA,IAAI,CAACZ,IAAI,CAAC,kBAAkB2G,SAASnE,MAAM;IAC7C;IAGAqE,iBAME;QACA,MAAMzI,UAAU4D,MAAMC,IAAI,CAAC,IAAI,CAAC7D,OAAO,CAAC8D,MAAM;QAC9C,MAAM4E,gBAAwC,CAAC;QAC/C,MAAMC,iBAAyC,CAAC;QAEhD,KAAK,MAAMpG,SAASvC,QAAS;YAC3B0I,aAAa,CAACnG,MAAMJ,IAAI,CAAC,GAAG,AAACuG,CAAAA,aAAa,CAACnG,MAAMJ,IAAI,CAAC,IAAI,CAAA,IAAK;YAC/DwG,cAAc,CAACpG,MAAML,OAAO,CAAC,GAAG,AAACyG,CAAAA,cAAc,CAACpG,MAAML,OAAO,CAAC,IAAI,CAAA,IAAK;QACzE;QAGA,MAAM0G,cAAczF,KAAKC,SAAS,CAACpD,SAASoE,MAAM;QAElD,OAAO;YACLuD,cAAc3H,QAAQoE,MAAM;YAC5BsE;YACAC;YACA1I,gBAAgB,IAAI,CAACA,cAAc,CAACqI,IAAI;YACxCM;QACF;IACF;IAEA,MAAMC,aAAa3G,OAAgB,EAAgB;QACjD,MAAMlC,UAAUkC,UAAU,MAAM,IAAI,CAACuB,MAAM,CAAC;YAAEvB;QAAQ,KAAK0B,MAAMC,IAAI,CAAC,IAAI,CAAC7D,OAAO,CAAC8D,MAAM;QAEzF,OAAO;YACL9D;YACAC,gBAAgBiC,UACZ0B,MAAMC,IAAI,CAAC,IAAI,CAAC5D,cAAc,CAAC6D,MAAM,IAAIC,MAAM,CAAC,CAAC4C,KAC/CA,GAAGtE,QAAQ,CAACmE,YAAY,CAACjC,QAAQ,CAACrC,YAEpC0B,MAAMC,IAAI,CAAC,IAAI,CAAC5D,cAAc,CAAC6D,MAAM;YACzCgF,YAAY,IAAIpG;YAChBqG,OAAO,IAAI,CAACN,cAAc;QAC5B;IACF;IAEA,MAAMO,YAAY9G,OAAgB,EAAiB;QACjD,IAAIA,SAAS;YAEX,MAAM+G,WAAW,IAAI,CAAC/I,aAAa,CAAC8C,GAAG,CAACd,YAAY,IAAIa;YACxD,KAAK,MAAMT,WAAW2G,SAAU;gBAC9B,IAAI,CAACjJ,OAAO,CAACwI,MAAM,CAAClG;YACtB;YACA,IAAI,CAACpC,aAAa,CAACsI,MAAM,CAACtG;YAC1B,IAAI,CAACrC,MAAM,CAACyB,IAAI,CAAC,CAAC,yBAAyB,EAAEY,SAAS;QACxD,OAAO;YAEL,IAAI,CAAClC,OAAO,CAACkJ,KAAK;YAClB,IAAI,CAAChJ,aAAa,CAACgJ,KAAK;YACxB,IAAI,CAACjJ,cAAc,CAACiJ,KAAK;YACzB,IAAI,CAACrJ,MAAM,CAACyB,IAAI,CAAC;QACnB;QAEA,IAAI,CAACM,IAAI,CAAC,kBAAkB;YAAEM;QAAQ;IACxC;IAGA,MAAMiH,MAAMjG,GAAW,EAAEkG,KAAU,EAAiB;QAElD,MAAMC,QAAQnG,IAAIoG,KAAK,CAAC;QACxB,MAAMnH,OAAO,AAACkH,KAAK,CAAC,EAAE,IAAiC;QACvD,MAAMnH,UAAUmH,KAAK,CAAC,EAAE,IAAI;QAE5B,MAAM,IAAI,CAACpH,QAAQ,CAACC,SAASC,MAAMiH,OAAO;YACxCjF,MAAM;gBAACkF,KAAK,CAAC,EAAE;gBAAEA,KAAK,CAAC,EAAE;aAAC,CAACtF,MAAM,CAACwD;YAClC5E,YAAY;QACd;IACF;IAEA,MAAM4G,OAAOC,OAAe,EAAE1E,QAAgB,EAAE,EAAkB;QAEhE,MAAMnB,UAAiB,EAAE;QAEzB,KAAK,MAAMpB,SAAS,IAAI,CAACvC,OAAO,CAAC8D,MAAM,GAAI;YACzC,MAAM2F,cAActG,KAAKC,SAAS,CAACb;YACnC,IAAIkH,YAAYlF,QAAQ,CAACiF,QAAQE,OAAO,CAAC,KAAK,MAAM;gBAClD/F,QAAQmD,IAAI,CAACvE,MAAMH,OAAO;gBAC1B,IAAIuB,QAAQS,MAAM,IAAIU,OAAO;YAC/B;QACF;QAEA,OAAOnB;IACT;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/key-redactor.js"],"sourcesContent":["/**\n * API Key Redaction Utility\n * Prevents sensitive data from leaking into logs, memory, or git commits\n */\n\nexport class KeyRedactor {\n static API_KEY_PATTERNS = [\n // Anthropic API keys\n /sk-ant-[a-zA-Z0-9_-]{95,}/gi,\n\n // OpenRouter API keys\n /sk-or-[a-zA-Z0-9_-]{32,}/gi,\n\n // Google/Gemini API keys\n /AIza[a-zA-Z0-9_-]{35}/gi,\n\n // Generic API keys\n /[a-zA-Z0-9_-]{20,}API[a-zA-Z0-9_-]{20,}/gi,\n\n // Bearer tokens\n /Bearer\\s+[a-zA-Z0-9_\\-\\.]{20,}/gi,\n\n // Environment variable format\n /([A-Z_]+_API_KEY|[A-Z_]+_TOKEN|[A-Z_]+_SECRET)=[\"']?([^\"'\\s]+)[\"']?/gi,\n\n // Supabase keys\n /eyJ[a-zA-Z0-9_-]*\\.eyJ[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]*/gi,\n ];\n\n static SENSITIVE_FIELDS = [\n 'apiKey',\n 'api_key',\n 'token',\n 'secret',\n 'password',\n 'private_key',\n 'privateKey',\n 'accessToken',\n 'access_token',\n 'refreshToken',\n 'refresh_token',\n ];\n\n /**\n * Redact API keys and sensitive data from text\n */\n static redact(text, showPrefix = true) {\n if (!text) return text;\n\n let redacted = text;\n\n // Redact using patterns\n this.API_KEY_PATTERNS.forEach(pattern => {\n redacted = redacted.replace(pattern, (match) => {\n if (showPrefix && match.length > 8) {\n const prefix = match.substring(0, 8);\n return `${prefix}...[REDACTED]`;\n }\n return '[REDACTED_API_KEY]';\n });\n });\n\n return redacted;\n }\n\n /**\n * Redact sensitive fields in objects\n */\n static redactObject(obj, deep = true) {\n if (!obj || typeof obj !== 'object') return obj;\n\n const redacted = { ...obj };\n\n Object.keys(redacted).forEach(key => {\n const lowerKey = key.toLowerCase();\n\n // Check if field name is sensitive\n const isSensitive = this.SENSITIVE_FIELDS.some(field =>\n lowerKey.includes(field)\n );\n\n if (isSensitive && typeof redacted[key] === 'string') {\n const value = redacted[key];\n if (value && value.length > 8) {\n redacted[key] = `${value.substring(0, 4)}...[REDACTED]`;\n } else {\n redacted[key] = '[REDACTED]';\n }\n } else if (deep && typeof redacted[key] === 'object' && redacted[key] !== null) {\n redacted[key] = this.redactObject(redacted[key], deep);\n } else if (typeof redacted[key] === 'string') {\n // Redact any API keys in string values\n redacted[key] = this.redact(redacted[key]);\n }\n });\n\n return redacted;\n }\n\n /**\n * Sanitize text for safe logging\n */\n static sanitize(text) {\n return this.redact(text, true);\n }\n\n /**\n * Sanitize command arguments\n */\n static sanitizeArgs(args) {\n return args.map(arg => {\n // Check if arg is a flag value pair\n if (arg.includes('key') || arg.includes('token') || arg.includes('secret')) {\n return this.redact(arg);\n }\n return arg;\n });\n }\n\n /**\n * Check if text contains unredacted sensitive data\n */\n static containsSensitiveData(text) {\n return this.API_KEY_PATTERNS.some(pattern => pattern.test(text));\n }\n\n /**\n * Validate that text is safe for logging/storage\n */\n static validate(text) {\n const warnings = [];\n\n this.API_KEY_PATTERNS.forEach((pattern, index) => {\n if (pattern.test(text)) {\n warnings.push(`Potential API key detected (pattern ${index + 1})`);\n }\n });\n\n return {\n safe: warnings.length === 0,\n warnings,\n };\n }\n\n /**\n * Redact environment variables\n */\n static redactEnv(env) {\n const redacted = {};\n\n Object.keys(env).forEach(key => {\n const value = env[key];\n if (!value) {\n redacted[key] = '';\n return;\n }\n\n const lowerKey = key.toLowerCase();\n const isSensitive = lowerKey.includes('key') ||\n lowerKey.includes('token') ||\n lowerKey.includes('secret') ||\n lowerKey.includes('password');\n\n if (isSensitive) {\n redacted[key] = value.length > 8\n ? `${value.substring(0, 4)}...[REDACTED]`\n : '[REDACTED]';\n } else {\n redacted[key] = value;\n }\n });\n\n return redacted;\n }\n}\n\n// Export singleton instance\nexport const redactor = KeyRedactor;\n"],"names":["KeyRedactor","API_KEY_PATTERNS","SENSITIVE_FIELDS","redact","text","showPrefix","redacted","forEach","pattern","replace","match","length","prefix","substring","redactObject","obj","deep","Object","keys","key","lowerKey","toLowerCase","isSensitive","some","field","includes","value","sanitize","sanitizeArgs","args","map","arg","containsSensitiveData","test","validate","warnings","index","push","safe","redactEnv","env","redactor"],"mappings":"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"},GAAG,CAACrB,IAAI;YACtB,IAAI,CAACO,OAAO;gBACVpB,QAAQ,CAACa,IAAI,GAAG;gBAChB;YACF;YAEA,MAAMC,WAAWD,IAAIE,WAAW;YAChC,MAAMC,cAAcF,SAASK,QAAQ,CAAC,UACnBL,SAASK,QAAQ,CAAC,YAClBL,SAASK,QAAQ,CAAC,aAClBL,SAASK,QAAQ,CAAC;YAErC,IAAIH,aAAa;gBACfhB,QAAQ,CAACa,IAAI,GAAGO,MAAMf,MAAM,GAAG,IAC3B,GAAGe,MAAMb,SAAS,CAAC,GAAG,GAAG,aAAa,CAAC,GACvC;YACN,OAAO;gBACLP,QAAQ,CAACa,IAAI,GAAGO;YAClB;QACF;QAEA,OAAOpB;IACT;AACF;AAGA,OAAO,MAAMmC,WAAWzC,YAAY"}
1
+ {"version":3,"sources":["../../../src/utils/key-redactor.ts"],"sourcesContent":["/**\n * API Key Redaction Utility\n * Prevents sensitive data from leaking into logs, memory, or git commits\n */\n\nexport interface RedactionConfig {\n patterns: RegExp[];\n replacement: string;\n maskLength: number;\n}\n\nexport class KeyRedactor {\n private static readonly API_KEY_PATTERNS = [\n // Anthropic API keys\n /sk-ant-[a-zA-Z0-9_-]{95,}/gi,\n\n // OpenRouter API keys\n /sk-or-[a-zA-Z0-9_-]{32,}/gi,\n\n // Google/Gemini API keys\n /AIza[a-zA-Z0-9_-]{35}/gi,\n\n // Generic API keys\n /[a-zA-Z0-9_-]{20,}API[a-zA-Z0-9_-]{20,}/gi,\n\n // Bearer tokens\n /Bearer\\s+[a-zA-Z0-9_\\-\\.]{20,}/gi,\n\n // Environment variable format\n /([A-Z_]+_API_KEY|[A-Z_]+_TOKEN|[A-Z_]+_SECRET)=[\"']?([^\"'\\s]+)[\"']?/gi,\n\n // Supabase keys\n /eyJ[a-zA-Z0-9_-]*\\.eyJ[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]*/gi,\n ];\n\n private static readonly SENSITIVE_FIELDS = [\n 'apiKey',\n 'api_key',\n 'token',\n 'secret',\n 'password',\n 'private_key',\n 'privateKey',\n 'accessToken',\n 'access_token',\n 'refreshToken',\n 'refresh_token',\n ];\n\n /**\n * Redact API keys and sensitive data from text\n */\n static redact(text: string, showPrefix = true): string {\n if (!text) return text;\n\n let redacted = text;\n\n // Redact using patterns\n this.API_KEY_PATTERNS.forEach(pattern => {\n redacted = redacted.replace(pattern, (match) => {\n if (showPrefix && match.length > 8) {\n const prefix = match.substring(0, 8);\n return `${prefix}...[REDACTED]`;\n }\n return '[REDACTED_API_KEY]';\n });\n });\n\n return redacted;\n }\n\n /**\n * Redact sensitive fields in objects\n */\n static redactObject<T extends Record<string, any>>(obj: T, deep = true): T {\n if (!obj || typeof obj !== 'object') return obj;\n\n const redacted = { ...obj };\n\n Object.keys(redacted).forEach(key => {\n const lowerKey = key.toLowerCase();\n\n // Check if field name is sensitive\n const isSensitive = this.SENSITIVE_FIELDS.some(field =>\n lowerKey.includes(field)\n );\n\n if (isSensitive && typeof redacted[key] === 'string') {\n const value = redacted[key] as string;\n if (value && value.length > 8) {\n redacted[key] = `${value.substring(0, 4)}...[REDACTED]` as any;\n } else {\n redacted[key] = '[REDACTED]' as any;\n }\n } else if (deep && typeof redacted[key] === 'object' && redacted[key] !== null) {\n redacted[key] = this.redactObject(redacted[key], deep);\n } else if (typeof redacted[key] === 'string') {\n // Redact any API keys in string values\n redacted[key] = this.redact(redacted[key]) as any;\n }\n });\n\n return redacted;\n }\n\n /**\n * Sanitize text for safe logging\n */\n static sanitize(text: string): string {\n return this.redact(text, true);\n }\n\n /**\n * Sanitize command arguments\n */\n static sanitizeArgs(args: string[]): string[] {\n return args.map(arg => {\n // Check if arg is a flag value pair\n if (arg.includes('key') || arg.includes('token') || arg.includes('secret')) {\n return this.redact(arg);\n }\n return arg;\n });\n }\n\n /**\n * Check if text contains unredacted sensitive data\n */\n static containsSensitiveData(text: string): boolean {\n return this.API_KEY_PATTERNS.some(pattern => pattern.test(text));\n }\n\n /**\n * Validate that text is safe for logging/storage\n */\n static validate(text: string): { safe: boolean; warnings: string[] } {\n const warnings: string[] = [];\n\n this.API_KEY_PATTERNS.forEach((pattern, index) => {\n if (pattern.test(text)) {\n warnings.push(`Potential API key detected (pattern ${index + 1})`);\n }\n });\n\n return {\n safe: warnings.length === 0,\n warnings,\n };\n }\n\n /**\n * Redact environment variables\n */\n static redactEnv(env: Record<string, string | undefined>): Record<string, string> {\n const redacted: Record<string, string> = {};\n\n Object.keys(env).forEach(key => {\n const value = env[key];\n if (!value) {\n redacted[key] = '';\n return;\n }\n\n const lowerKey = key.toLowerCase();\n const isSensitive = lowerKey.includes('key') ||\n lowerKey.includes('token') ||\n lowerKey.includes('secret') ||\n lowerKey.includes('password');\n\n if (isSensitive) {\n redacted[key] = value.length > 8\n ? `${value.substring(0, 4)}...[REDACTED]`\n : '[REDACTED]';\n } else {\n redacted[key] = value;\n }\n });\n\n return redacted;\n }\n}\n\n// Export singleton instance\nexport const redactor = KeyRedactor;\n"],"names":["KeyRedactor","API_KEY_PATTERNS","SENSITIVE_FIELDS","redact","text","showPrefix","redacted","forEach","pattern","replace","match","length","prefix","substring","redactObject","obj","deep","Object","keys","key","lowerKey","toLowerCase","isSensitive","some","field","includes","value","sanitize","sanitizeArgs","args","map","arg","containsSensitiveData","test","validate","warnings","index","push","safe","redactEnv","env","redactor"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/metrics-reader.js"],"sourcesContent":["import { promises as fs } from 'fs';\nimport path from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\nclass MetricsReader {\n constructor() {\n this.metricsDir = '.claude-flow/metrics';\n this.sessionsDir = '.claude-flow/sessions';\n }\n\n async getSystemMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'system-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n const metrics = JSON.parse(content);\n \n // Return the most recent metric\n return metrics.length > 0 ? metrics[metrics.length - 1] : null;\n } catch (error) {\n return null;\n }\n }\n\n async getTaskQueue() {\n try {\n const queueFile = '.claude-flow/tasks/queue.json';\n const content = await fs.readFile(queueFile, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return [];\n }\n }\n\n async getTaskMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'task-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return [];\n }\n }\n\n async getPerformanceMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'performance.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getActiveAgents() {\n try {\n const agents = [];\n \n // Check for agents in the .claude-flow/agents directory\n const agentsDir = '.claude-flow/agents';\n try {\n const agentFiles = await fs.readdir(agentsDir);\n for (const file of agentFiles) {\n if (file.endsWith('.json')) {\n try {\n const content = await fs.readFile(path.join(agentsDir, file), 'utf8');\n const agent = JSON.parse(content);\n agents.push(agent);\n } catch {\n // Skip invalid agent files\n }\n }\n }\n } catch {\n // Agents directory doesn't exist yet\n }\n \n // If no agents found in directory, check session files\n if (agents.length === 0) {\n const sessionFiles = await this.getSessionFiles();\n for (const file of sessionFiles) {\n try {\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', file), 'utf8');\n const sessionData = JSON.parse(content);\n \n if (sessionData.agents && Array.isArray(sessionData.agents)) {\n agents.push(...sessionData.agents);\n }\n } catch {\n // Skip invalid session files\n }\n }\n }\n \n return agents;\n } catch (error) {\n return [];\n }\n }\n\n async getSessionStatus() {\n try {\n const sessionFiles = await this.getSessionFiles();\n \n if (sessionFiles.length === 0) {\n return null;\n }\n \n // Get the most recent session\n const mostRecentFile = sessionFiles[sessionFiles.length - 1];\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', mostRecentFile), 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getRecentTasks(limit = 10) {\n try {\n const taskMetrics = await this.getTaskMetrics();\n \n // Sort by timestamp descending and take the limit\n return taskMetrics\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, limit)\n .map(task => ({\n id: task.id,\n type: task.type,\n status: task.success ? 'completed' : 'failed',\n startTime: task.timestamp - task.duration,\n endTime: task.timestamp,\n duration: task.duration\n }));\n } catch (error) {\n return [];\n }\n }\n\n async getOverallHealth() {\n try {\n const systemMetrics = await this.getSystemMetrics();\n const perfMetrics = await this.getPerformanceMetrics();\n \n if (!systemMetrics && !perfMetrics) {\n return 'error';\n }\n \n // Check memory usage\n if (systemMetrics && systemMetrics.memoryUsagePercent > 90) {\n return 'error';\n }\n \n if (systemMetrics && systemMetrics.memoryUsagePercent > 75) {\n return 'warning';\n }\n \n // Check CPU load\n if (systemMetrics && systemMetrics.cpuLoad > 0.8) {\n return 'warning';\n }\n \n // Check task failure rate\n if (perfMetrics && perfMetrics.totalTasks > 0) {\n const failureRate = perfMetrics.failedTasks / perfMetrics.totalTasks;\n if (failureRate > 0.5) {\n return 'error';\n }\n if (failureRate > 0.2) {\n return 'warning';\n }\n }\n \n return 'healthy';\n } catch (error) {\n return 'error';\n }\n }\n\n async getSessionFiles() {\n try {\n const files = await fs.readdir(path.join(this.sessionsDir, 'pair'));\n return files.filter(f => f.endsWith('.json')).sort();\n } catch (error) {\n return [];\n }\n }\n\n async getMCPServerStatus() {\n try {\n // Check if MCP server process is running (including flow-nexus and other MCP variants)\n const { stdout } = await execAsync('ps aux | grep -E \"mcp\" | grep -v grep | wc -l');\n const processCount = parseInt(stdout.trim(), 10);\n \n // Check for orchestrator running\n const { stdout: orchestratorOut } = await execAsync('ps aux | grep -E \"claude-flow start\" | grep -v grep | wc -l');\n const orchestratorRunning = parseInt(orchestratorOut.trim(), 10) > 0;\n \n // Determine status\n const isRunning = processCount > 0;\n \n // Try to get port from process (default is 3000)\n let port = 3000;\n try {\n const { stdout: portOut } = await execAsync('lsof -i :3000 2>/dev/null | grep LISTEN | wc -l');\n if (parseInt(portOut.trim(), 10) === 0) {\n // If port 3000 not listening, check other common ports\n port = null;\n }\n } catch {\n // lsof might not be available or port not in use\n }\n \n return {\n running: isRunning,\n processCount,\n orchestratorRunning,\n port,\n connections: processCount > 0 ? Math.max(1, processCount - 1) : 0 // Estimate connections\n };\n } catch (error) {\n // Fallback if commands fail\n return {\n running: false,\n processCount: 0,\n orchestratorRunning: false,\n port: null,\n connections: 0\n };\n }\n }\n}\n\nexport { MetricsReader };"],"names":["promises","fs","path","exec","promisify","execAsync","MetricsReader","metricsDir","sessionsDir","getSystemMetrics","filePath","join","content","readFile","metrics","JSON","parse","length","error","getTaskQueue","queueFile","getTaskMetrics","getPerformanceMetrics","getActiveAgents","agents","agentsDir","agentFiles","readdir","file","endsWith","agent","push","sessionFiles","getSessionFiles","sessionData","Array","isArray","getSessionStatus","mostRecentFile","getRecentTasks","limit","taskMetrics","sort","a","b","timestamp","slice","map","task","id","type","status","success","startTime","duration","endTime","getOverallHealth","systemMetrics","perfMetrics","memoryUsagePercent","cpuLoad","totalTasks","failureRate","failedTasks","files","filter","f","getMCPServerStatus","stdout","processCount","parseInt","trim","orchestratorOut","orchestratorRunning","isRunning","port","portOut","running","connections","Math","max"],"mappings":"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"}AG,KAAK;gBAChD,OAAO;YACT;YAGA,IAAIzC,eAAeA,YAAY0C,UAAU,GAAG,GAAG;gBAC7C,MAAMC,cAAc3C,YAAY4C,WAAW,GAAG5C,YAAY0C,UAAU;gBACpE,IAAIC,cAAc,KAAK;oBACrB,OAAO;gBACT;gBACA,IAAIA,cAAc,KAAK;oBACrB,OAAO;gBACT;YACF;YAEA,OAAO;QACT,EAAE,OAAO/C,OAAO;YACd,OAAO;QACT;IACF;IAEA,MAAcM,kBAAqC;QACjD,IAAI;YACF,MAAM2C,QAAQ,MAAMlE,GAAGmE,OAAO,CAAClE,KAAKS,IAAI,CAAC,IAAI,CAACH,WAAW,EAAE;YAC3D,OAAO2D,MAAME,MAAM,CAACC,CAAAA,IAAKA,EAAEC,QAAQ,CAAC,UAAUtB,IAAI;QACpD,EAAE,OAAO/B,OAAO;YACd,OAAO,EAAE;QACX;IACF;IAEA,MAAMsD,qBAA+C;QACnD,IAAI;YAEF,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMpE,UAAU;YACnC,MAAMqE,eAAeC,SAASF,OAAOG,IAAI,IAAI;YAG7C,MAAM,EAAEH,QAAQI,eAAe,EAAE,GAAG,MAAMxE,UAAU;YACpD,MAAMyE,sBAAsBH,SAASE,gBAAgBD,IAAI,IAAI,MAAM;YAGnE,MAAMG,YAAYL,eAAe;YAGjC,IAAIM,OAAsB;YAC1B,IAAI;gBACF,MAAM,EAAEP,QAAQQ,OAAO,EAAE,GAAG,MAAM5E,UAAU;gBAC5C,IAAIsE,SAASM,QAAQL,IAAI,IAAI,QAAQ,GAAG;oBAEtCI,OAAO;gBACT;YACF,EAAE,OAAM,CAER;YAEA,OAAO;gBACLE,SAASH;gBACTL;gBACAI;gBACAE;gBACAG,aAAaT,eAAe,IAAIU,KAAKC,GAAG,CAAC,GAAGX,eAAe,KAAK;YAClE;QACF,EAAE,OAAOxD,OAAO;YAEd,OAAO;gBACLgE,SAAS;gBACTR,cAAc;gBACdI,qBAAqB;gBACrBE,MAAM;gBACNG,aAAa;YACf;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/utils/metrics-reader.js"],"sourcesContent":["import { promises as fs } from 'fs';\nimport path from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\nclass MetricsReader {\n constructor() {\n this.metricsDir = '.claude-flow/metrics';\n this.sessionsDir = '.claude-flow/sessions';\n }\n\n async getSystemMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'system-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n const metrics = JSON.parse(content);\n \n // Return the most recent metric\n return metrics.length > 0 ? metrics[metrics.length - 1] : null;\n } catch (error) {\n return null;\n }\n }\n\n async getTaskQueue() {\n try {\n const queueFile = '.claude-flow/tasks/queue.json';\n const content = await fs.readFile(queueFile, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return [];\n }\n }\n\n async getTaskMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'task-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return [];\n }\n }\n\n async getPerformanceMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'performance.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getActiveAgents() {\n try {\n const agents = [];\n \n // Check for agents in the .claude-flow/agents directory\n const agentsDir = '.claude-flow/agents';\n try {\n const agentFiles = await fs.readdir(agentsDir);\n for (const file of agentFiles) {\n if (file.endsWith('.json')) {\n try {\n const content = await fs.readFile(path.join(agentsDir, file), 'utf8');\n const agent = JSON.parse(content);\n agents.push(agent);\n } catch {\n // Skip invalid agent files\n }\n }\n }\n } catch {\n // Agents directory doesn't exist yet\n }\n \n // If no agents found in directory, check session files\n if (agents.length === 0) {\n const sessionFiles = await this.getSessionFiles();\n for (const file of sessionFiles) {\n try {\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', file), 'utf8');\n const sessionData = JSON.parse(content);\n \n if (sessionData.agents && Array.isArray(sessionData.agents)) {\n agents.push(...sessionData.agents);\n }\n } catch {\n // Skip invalid session files\n }\n }\n }\n \n return agents;\n } catch (error) {\n return [];\n }\n }\n\n async getSessionStatus() {\n try {\n const sessionFiles = await this.getSessionFiles();\n \n if (sessionFiles.length === 0) {\n return null;\n }\n \n // Get the most recent session\n const mostRecentFile = sessionFiles[sessionFiles.length - 1];\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', mostRecentFile), 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getRecentTasks(limit = 10) {\n try {\n const taskMetrics = await this.getTaskMetrics();\n \n // Sort by timestamp descending and take the limit\n return taskMetrics\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, limit)\n .map(task => ({\n id: task.id,\n type: task.type,\n status: task.success ? 'completed' : 'failed',\n startTime: task.timestamp - task.duration,\n endTime: task.timestamp,\n duration: task.duration\n }));\n } catch (error) {\n return [];\n }\n }\n\n async getOverallHealth() {\n try {\n const systemMetrics = await this.getSystemMetrics();\n const perfMetrics = await this.getPerformanceMetrics();\n \n if (!systemMetrics && !perfMetrics) {\n return 'error';\n }\n \n // Check memory usage\n if (systemMetrics && systemMetrics.memoryUsagePercent > 90) {\n return 'error';\n }\n \n if (systemMetrics && systemMetrics.memoryUsagePercent > 75) {\n return 'warning';\n }\n \n // Check CPU load\n if (systemMetrics && systemMetrics.cpuLoad > 0.8) {\n return 'warning';\n }\n \n // Check task failure rate\n if (perfMetrics && perfMetrics.totalTasks > 0) {\n const failureRate = perfMetrics.failedTasks / perfMetrics.totalTasks;\n if (failureRate > 0.5) {\n return 'error';\n }\n if (failureRate > 0.2) {\n return 'warning';\n }\n }\n \n return 'healthy';\n } catch (error) {\n return 'error';\n }\n }\n\n async getSessionFiles() {\n try {\n const files = await fs.readdir(path.join(this.sessionsDir, 'pair'));\n return files.filter(f => f.endsWith('.json')).sort();\n } catch (error) {\n return [];\n }\n }\n\n async getMCPServerStatus() {\n try {\n // Check if MCP server process is running (including flow-nexus and other MCP variants)\n const { stdout } = await execAsync('ps aux | grep -E \"mcp\" | grep -v grep | wc -l');\n const processCount = parseInt(stdout.trim(), 10);\n \n // Check for orchestrator running\n const { stdout: orchestratorOut } = await execAsync('ps aux | grep -E \"claude-flow start\" | grep -v grep | wc -l');\n const orchestratorRunning = parseInt(orchestratorOut.trim(), 10) > 0;\n \n // Determine status\n const isRunning = processCount > 0;\n \n // Try to get port from process (default is 3000)\n let port = 3000;\n try {\n const { stdout: portOut } = await execAsync('lsof -i :3000 2>/dev/null | grep LISTEN | wc -l');\n if (parseInt(portOut.trim(), 10) === 0) {\n // If port 3000 not listening, check other common ports\n port = null;\n }\n } catch {\n // lsof might not be available or port not in use\n }\n \n return {\n running: isRunning,\n processCount,\n orchestratorRunning,\n port,\n connections: processCount > 0 ? Math.max(1, processCount - 1) : 0 // Estimate connections\n };\n } catch (error) {\n // Fallback if commands fail\n return {\n running: false,\n processCount: 0,\n orchestratorRunning: false,\n port: null,\n connections: 0\n };\n }\n }\n}\n\nexport { MetricsReader };"],"names":["promises","fs","path","exec","promisify","execAsync","MetricsReader","metricsDir","sessionsDir","getSystemMetrics","filePath","join","content","readFile","metrics","JSON","parse","length","error","getTaskQueue","queueFile","getTaskMetrics","getPerformanceMetrics","getActiveAgents","agents","agentsDir","agentFiles","readdir","file","endsWith","agent","push","sessionFiles","getSessionFiles","sessionData","Array","isArray","getSessionStatus","mostRecentFile","getRecentTasks","limit","taskMetrics","sort","a","b","timestamp","slice","map","task","id","type","status","success","startTime","duration","endTime","getOverallHealth","systemMetrics","perfMetrics","memoryUsagePercent","cpuLoad","totalTasks","failureRate","failedTasks","files","filter","f","getMCPServerStatus","stdout","processCount","parseInt","trim","orchestratorOut","orchestratorRunning","isRunning","port","portOut","running","connections","Math","max"],"mappings":"AAAA,SAASA,YAAYC,EAAE,QAAQ,KAAK;AACpC,OAAOC,UAAU,OAAO;AACxB,SAASC,IAAI,QAAQ,gBAAgB;AACrC,SAASC,SAAS,QAAQ,OAAO;AAEjC,MAAMC,YAAYD,UAAUD;AAE5B,IAAA,AAAMG,gBAAN,MAAMA;IACJ,aAAc;QACZ,IAAI,CAACC,UAAU,GAAG;QAClB,IAAI,CAACC,WAAW,GAAG;IACrB;IAEA,MAAMC,mBAAmB;QACvB,IAAI;YACF,MAAMC,WAAWR,KAAKS,IAAI,CAAC,IAAI,CAACJ,UAAU,EAAE;YAC5C,MAAMK,UAAU,MAAMX,GAAGY,QAAQ,CAACH,UAAU;YAC5C,MAAMI,UAAUC,KAAKC,KAAK,CAACJ;YAG3B,OAAOE,QAAQG,MAAM,GAAG,IAAIH,OAAO,CAACA,QAAQG,MAAM,GAAG,EAAE,GAAG;QAC5D,EAAE,OAAOC,OAAO;YACd,OAAO;QACT;IACF;IAEA,MAAMC,eAAe;QACnB,IAAI;YACF,MAAMC,YAAY;YAClB,MAAMR,UAAU,MAAMX,GAAGY,QAAQ,CAACO,WAAW;YAC7C,OAAOL,KAAKC,KAAK,CAACJ;QACpB,EAAE,OAAOM,OAAO;YACd,OAAO,EAAE;QACX;IACF;IAEA,MAAMG,iBAAiB;QACrB,IAAI;YACF,MAAMX,WAAWR,KAAKS,IAAI,CAAC,IAAI,CAACJ,UAAU,EAAE;YAC5C,MAAMK,UAAU,MAAMX,GAAGY,QAAQ,CAACH,UAAU;YAC5C,OAAOK,KAAKC,KAAK,CAACJ;QACpB,EAAE,OAAOM,OAAO;YACd,OAAO,EAAE;QACX;IACF;IAEA,MAAMI,wBAAwB;QAC5B,IAAI;YACF,MAAMZ,WAAWR,KAAKS,IAAI,CAAC,IAAI,CAACJ,UAAU,EAAE;YAC5C,MAAMK,UAAU,MAAMX,GAAGY,QAAQ,CAACH,UAAU;YAC5C,OAAOK,KAAKC,KAAK,CAACJ;QACpB,EAAE,OAAOM,OAAO;YACd,OAAO;QACT;IACF;IAEA,MAAMK,kBAAkB;QACtB,IAAI;YACF,MAAMC,SAAS,EAAE;YAGjB,MAAMC,YAAY;YAClB,IAAI;gBACF,MAAMC,aAAa,MAAMzB,GAAG0B,OAAO,CAACF;gBACpC,KAAK,MAAMG,QAAQF,WAAY;oBAC7B,IAAIE,KAAKC,QAAQ,CAAC,UAAU;wBAC1B,IAAI;4BACF,MAAMjB,UAAU,MAAMX,GAAGY,QAAQ,CAACX,KAAKS,IAAI,CAACc,WAAWG,OAAO;4BAC9D,MAAME,QAAQf,KAAKC,KAAK,CAACJ;4BACzBY,OAAOO,IAAI,CAACD;wBACd,EAAE,OAAM,CAER;oBACF;gBACF;YACF,EAAE,OAAM,CAER;YAGA,IAAIN,OAAOP,MAAM,KAAK,GAAG;gBACvB,MAAMe,eAAe,MAAM,IAAI,CAACC,eAAe;gBAC/C,KAAK,MAAML,QAAQI,aAAc;oBAC/B,IAAI;wBACF,MAAMpB,UAAU,MAAMX,GAAGY,QAAQ,CAACX,KAAKS,IAAI,CAAC,IAAI,CAACH,WAAW,EAAE,QAAQoB,OAAO;wBAC7E,MAAMM,cAAcnB,KAAKC,KAAK,CAACJ;wBAE/B,IAAIsB,YAAYV,MAAM,IAAIW,MAAMC,OAAO,CAACF,YAAYV,MAAM,GAAG;4BAC3DA,OAAOO,IAAI,IAAIG,YAAYV,MAAM;wBACnC;oBACF,EAAE,OAAM,CAER;gBACF;YACF;YAEA,OAAOA;QACT,EAAE,OAAON,OAAO;YACd,OAAO,EAAE;QACX;IACF;IAEA,MAAMmB,mBAAmB;QACvB,IAAI;YACF,MAAML,eAAe,MAAM,IAAI,CAACC,eAAe;YAE/C,IAAID,aAAaf,MAAM,KAAK,GAAG;gBAC7B,OAAO;YACT;YAGA,MAAMqB,iBAAiBN,YAAY,CAACA,aAAaf,MAAM,GAAG,EAAE;YAC5D,MAAML,UAAU,MAAMX,GAAGY,QAAQ,CAACX,KAAKS,IAAI,CAAC,IAAI,CAACH,WAAW,EAAE,QAAQ8B,iBAAiB;YACvF,OAAOvB,KAAKC,KAAK,CAACJ;QACpB,EAAE,OAAOM,OAAO;YACd,OAAO;QACT;IACF;IAEA,MAAMqB,eAAeC,QAAQ,EAAE,EAAE;QAC/B,IAAI;YACF,MAAMC,cAAc,MAAM,IAAI,CAACpB,cAAc;YAG7C,OAAOoB,YACJC,IAAI,CAAC,CAACC,GAAGC,IAAMA,EAAEC,SAAS,GAAGF,EAAEE,SAAS,EACxCC,KAAK,CAAC,GAAGN,OACTO,GAAG,CAACC,CAAAA,OAAS,CAAA;oBACZC,IAAID,KAAKC,EAAE;oBACXC,MAAMF,KAAKE,IAAI;oBACfC,QAAQH,KAAKI,OAAO,GAAG,cAAc;oBACrCC,WAAWL,KAAKH,SAAS,GAAGG,KAAKM,QAAQ;oBACzCC,SAASP,KAAKH,SAAS;oBACvBS,UAAUN,KAAKM,QAAQ;gBACzB,CAAA;QACJ,EAAE,OAAOpC,OAAO;YACd,OAAO,EAAE;QACX;IACF;IAEA,MAAMsC,mBAAmB;QACvB,IAAI;YACF,MAAMC,gBAAgB,MAAM,IAAI,CAAChD,gBAAgB;YACjD,MAAMiD,cAAc,MAAM,IAAI,CAACpC,qBAAqB;YAEpD,IAAI,CAACmC,iBAAiB,CAACC,aAAa;gBAClC,OAAO;YACT;YAGA,IAAID,iBAAiBA,cAAcE,kBAAkB,GAAG,IAAI;gBAC1D,OAAO;YACT;YAEA,IAAIF,iBAAiBA,cAAcE,kBAAkB,GAAG,IAAI;gBAC1D,OAAO;YACT;YAGA,IAAIF,iBAAiBA,cAAcG,OAAO,GAAG,KAAK;gBAChD,OAAO;YACT;YAGA,IAAIF,eAAeA,YAAYG,UAAU,GAAG,GAAG;gBAC7C,MAAMC,cAAcJ,YAAYK,WAAW,GAAGL,YAAYG,UAAU;gBACpE,IAAIC,cAAc,KAAK;oBACrB,OAAO;gBACT;gBACA,IAAIA,cAAc,KAAK;oBACrB,OAAO;gBACT;YACF;YAEA,OAAO;QACT,EAAE,OAAO5C,OAAO;YACd,OAAO;QACT;IACF;IAEA,MAAMe,kBAAkB;QACtB,IAAI;YACF,MAAM+B,QAAQ,MAAM/D,GAAG0B,OAAO,CAACzB,KAAKS,IAAI,CAAC,IAAI,CAACH,WAAW,EAAE;YAC3D,OAAOwD,MAAMC,MAAM,CAACC,CAAAA,IAAKA,EAAErC,QAAQ,CAAC,UAAUa,IAAI;QACpD,EAAE,OAAOxB,OAAO;YACd,OAAO,EAAE;QACX;IACF;IAEA,MAAMiD,qBAAqB;QACzB,IAAI;YAEF,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAM/D,UAAU;YACnC,MAAMgE,eAAeC,SAASF,OAAOG,IAAI,IAAI;YAG7C,MAAM,EAAEH,QAAQI,eAAe,EAAE,GAAG,MAAMnE,UAAU;YACpD,MAAMoE,sBAAsBH,SAASE,gBAAgBD,IAAI,IAAI,MAAM;YAGnE,MAAMG,YAAYL,eAAe;YAGjC,IAAIM,OAAO;YACX,IAAI;gBACF,MAAM,EAAEP,QAAQQ,OAAO,EAAE,GAAG,MAAMvE,UAAU;gBAC5C,IAAIiE,SAASM,QAAQL,IAAI,IAAI,QAAQ,GAAG;oBAEtCI,OAAO;gBACT;YACF,EAAE,OAAM,CAER;YAEA,OAAO;gBACLE,SAASH;gBACTL;gBACAI;gBACAE;gBACAG,aAAaT,eAAe,IAAIU,KAAKC,GAAG,CAAC,GAAGX,eAAe,KAAK;YAClE;QACF,EAAE,OAAOnD,OAAO;YAEd,OAAO;gBACL2D,SAAS;gBACTR,cAAc;gBACdI,qBAAqB;gBACrBE,MAAM;gBACNG,aAAa;YACf;QACF;IACF;AACF;AAEA,SAASxE,aAAa,GAAG"}
@@ -1,9 +1,87 @@
1
1
  {
2
- "startTime": 1760387417559,
2
+ "startTime": 1761229787011,
3
+ "sessionId": "session-1761229787011",
4
+ "lastActivity": 1761229787011,
5
+ "sessionDuration": 0,
3
6
  "totalTasks": 1,
4
7
  "successfulTasks": 1,
5
8
  "failedTasks": 0,
6
9
  "totalAgents": 0,
7
10
  "activeAgents": 0,
8
- "neuralEvents": 0
11
+ "neuralEvents": 0,
12
+ "memoryMode": {
13
+ "reasoningbankOperations": 0,
14
+ "basicOperations": 0,
15
+ "autoModeSelections": 0,
16
+ "modeOverrides": 0,
17
+ "currentMode": "auto"
18
+ },
19
+ "operations": {
20
+ "store": {
21
+ "count": 0,
22
+ "totalDuration": 0,
23
+ "errors": 0
24
+ },
25
+ "retrieve": {
26
+ "count": 0,
27
+ "totalDuration": 0,
28
+ "errors": 0
29
+ },
30
+ "query": {
31
+ "count": 0,
32
+ "totalDuration": 0,
33
+ "errors": 0
34
+ },
35
+ "list": {
36
+ "count": 0,
37
+ "totalDuration": 0,
38
+ "errors": 0
39
+ },
40
+ "delete": {
41
+ "count": 0,
42
+ "totalDuration": 0,
43
+ "errors": 0
44
+ },
45
+ "search": {
46
+ "count": 0,
47
+ "totalDuration": 0,
48
+ "errors": 0
49
+ },
50
+ "init": {
51
+ "count": 0,
52
+ "totalDuration": 0,
53
+ "errors": 0
54
+ }
55
+ },
56
+ "performance": {
57
+ "avgOperationDuration": 0,
58
+ "minOperationDuration": null,
59
+ "maxOperationDuration": null,
60
+ "slowOperations": 0,
61
+ "fastOperations": 0,
62
+ "totalOperationTime": 0
63
+ },
64
+ "storage": {
65
+ "totalEntries": 0,
66
+ "reasoningbankEntries": 0,
67
+ "basicEntries": 0,
68
+ "databaseSize": 0,
69
+ "lastBackup": null,
70
+ "growthRate": 0
71
+ },
72
+ "errors": {
73
+ "total": 0,
74
+ "byType": {},
75
+ "byOperation": {},
76
+ "recent": []
77
+ },
78
+ "reasoningbank": {
79
+ "semanticSearches": 0,
80
+ "sqlFallbacks": 0,
81
+ "embeddingGenerated": 0,
82
+ "consolidations": 0,
83
+ "avgQueryTime": 0,
84
+ "cacheHits": 0,
85
+ "cacheMisses": 0
86
+ }
9
87
  }
@@ -1,10 +1,10 @@
1
1
  [
2
2
  {
3
- "id": "cmd-hooks-1760387417663",
3
+ "id": "cmd-hooks-1761229787109",
4
4
  "type": "hooks",
5
5
  "success": true,
6
- "duration": 7.150390000000016,
7
- "timestamp": 1760387417671,
6
+ "duration": 7.501108999999985,
7
+ "timestamp": 1761229787117,
8
8
  "metadata": {}
9
9
  }
10
10
  ]
package/docs/INDEX.md CHANGED
@@ -256,27 +256,52 @@ npx claude-flow@alpha --agents 3 swarm "task description"
256
256
  docs/
257
257
  ├── 📄 README.md & INDEX.md # Core entry points
258
258
 
259
+ ├── 🚀 releases/ # Release Notes & Changelogs
260
+ │ ├── RELEASE_v2.7.1.md # v2.7.1 release notes
261
+ │ ├── RELEASE_SUMMARY_v2.7.1.md # v2.7.1 summary
262
+ │ ├── RELEASE-NOTES-v2.7.0-alpha.10.md # Alpha 10 release notes
263
+ │ ├── RELEASE-NOTES-v2.7.0-alpha.9.md # Alpha 9 release notes
264
+ │ └── ALPHA_TAG_UPDATE.md # Alpha versioning guide
265
+
266
+ ├── 🧠 agentdb/ # AgentDB v1.3.9 Integration
267
+ │ ├── SWARM_IMPLEMENTATION_COMPLETE.md # 3-agent swarm (180 tests)
268
+ │ ├── AGENTDB_INTEGRATION_PLAN.md # Integration planning
269
+ │ ├── BACKWARD_COMPATIBILITY_GUARANTEE.md # 100% compatibility
270
+ │ ├── PUBLISHING_CHECKLIST.md # Pre-release verification
271
+ │ ├── agentdb-integration-summary.md # Quick overview
272
+ │ ├── PRODUCTION_READINESS.md # Deployment guide
273
+ │ └── OPTIMIZATION_REPORT.md # Performance analysis
274
+
275
+ ├── ⚡ performance/ # Performance Optimization
276
+ │ ├── PERFORMANCE-JSON-IMPROVEMENTS.md # JSON optimization
277
+ │ └── PERFORMANCE-METRICS-GUIDE.md # Metrics tracking
278
+
279
+ ├── 🔧 fixes/ # Bug Fixes & Patches
280
+ │ ├── PATTERN_PERSISTENCE_FIX.md # v2.7.1 critical fix
281
+ │ ├── PATTERN_FIX_CONFIRMATION.md # Verification results
282
+ │ └── CLI-MEMORY-COMMANDS-WORKING.md # Memory command fixes
283
+
284
+ ├── 🛠️ development/ # Development Reports
285
+ │ ├── AGENT1_COMPLETION_REPORT.md # AgentDB integration agent
286
+ │ ├── FINAL_INIT_STRUCTURE.md # Initialization architecture
287
+ │ └── COMMANDS_TO_SKILLS_MIGRATION.md # Migration guide
288
+
289
+ ├── ✅ validation/ # Testing & Validation
290
+ │ └── DOCKER_VERIFICATION_REPORT.md # Docker testing results
291
+
292
+ ├── 📚 guides/ # User Guides & Tutorials
293
+ │ └── skills-tutorial.md # 25 Claude Flow skills
294
+
259
295
  ├── 🔌 integrations/ # Platform Integrations
260
296
  │ ├── reasoningbank/ # ReasoningBank AI integration (16 docs)
261
297
  │ ├── agentic-flow/ # Agentic Flow system (5 docs)
262
298
  │ ├── agent-booster/ # Agent performance optimization
263
299
  │ └── epic-sdk/ # Epic SDK integration
264
300
 
265
- ├── 📊 reports/ # Analysis & Reports
266
- │ ├── validation/ # Validation & testing reports (7 docs)
267
- │ ├── releases/ # Release notes & summaries (4 docs)
268
- │ └── analysis/ # Deep analysis & reviews (2 docs)
269
-
270
- ├── 🔧 technical/ # Technical Details
271
- │ ├── fixes/ # Technical fix summaries (2 docs)
272
- │ └── performance/ # Performance reports & metrics
273
-
274
301
  ├── 🏗️ architecture/ # Architecture documentation
275
- ├── 📚 guides/ # User guides & tutorials
276
302
  ├── 🔬 experimental/ # Experimental features
277
303
  ├── 📘 reference/ # API & command reference
278
- ├── ⚙️ setup/ # Setup & configuration (+ ENV-SETUP-GUIDE)
279
- ├── ✅ validation/ # Validation frameworks
304
+ ├── ⚙️ setup/ # Setup & configuration
280
305
  ├── 🔄 ci-cd/ # CI/CD workflows
281
306
  ├── 📦 sdk/ # SDK documentation
282
307
  └── 📖 wiki/ # Additional wiki content
package/docs/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # 📚 Claude-Flow Documentation
2
2
 
3
- Welcome to the Claude-Flow documentation! This directory contains comprehensive guides and references for using Claude-Flow v2.0.0-alpha.88.
3
+ Welcome to the Claude-Flow documentation! This directory contains comprehensive guides and references for using Claude-Flow v2.7.0.
4
4
 
5
- ## 📖 Documentation Structure
5
+ ## 📖 Core Documentation
6
6
 
7
7
  | Document | Description |
8
8
  |----------|-------------|
9
- | [INDEX.md](INDEX.md) | Main documentation hub with quick start and navigation |
9
+ | [INDEX.md](INDEX.md) | Complete documentation hub with navigation and quick start |
10
10
  | [USER_GUIDE.md](USER_GUIDE.md) | Comprehensive user guide with tutorials and examples |
11
11
  | [API_DOCUMENTATION.md](API_DOCUMENTATION.md) | Complete API reference with all 112 MCP tools |
12
12
  | [AGENTS.md](AGENTS.md) | All 65+ agent types with capabilities and usage |
@@ -17,12 +17,100 @@ Welcome to the Claude-Flow documentation! This directory contains comprehensive
17
17
  | [DEPLOYMENT.md](DEPLOYMENT.md) | Production deployment guides for Docker, K8s, Cloud |
18
18
  | [DEVELOPMENT_WORKFLOW.md](DEVELOPMENT_WORKFLOW.md) | Development setup and contribution guide |
19
19
 
20
+ ## 📁 Documentation Categories
21
+
22
+ ### 🚀 [Releases](./releases/)
23
+ Release notes, changelogs, and version documentation
24
+ - [v2.7.1](./releases/v2.7.1/) - Current stable release
25
+ - [v2.7.0-alpha.10](./releases/v2.7.0-alpha.10/) - Alpha release notes
26
+ - [v2.7.0-alpha.9](./releases/v2.7.0-alpha.9/) - Previous alpha release
27
+ - [Alpha Tag Updates](./releases/ALPHA_TAG_UPDATE.md) - Alpha versioning guide
28
+
29
+ ### 🧠 [AgentDB Integration](./agentdb/)
30
+ AgentDB v1.3.9 integration documentation (96x-164x performance boost)
31
+ - [Implementation Complete](./agentdb/SWARM_IMPLEMENTATION_COMPLETE.md) - 3-agent swarm details
32
+ - [Integration Plan](./agentdb/AGENTDB_INTEGRATION_PLAN.md) - Planning and design
33
+ - [Backward Compatibility](./agentdb/BACKWARD_COMPATIBILITY_GUARANTEE.md) - 100% compatibility guarantee
34
+ - [Publishing Checklist](./agentdb/PUBLISHING_CHECKLIST.md) - Pre-release verification
35
+ - [Integration Summary](./agentdb/agentdb-integration-summary.md) - Quick overview
36
+ - [Production Readiness](./agentdb/PRODUCTION_READINESS.md) - Deployment guide
37
+ - [Optimization Report](./agentdb/OPTIMIZATION_REPORT.md) - Performance analysis
38
+
39
+ ### ⚡ [Performance](./performance/)
40
+ Performance optimization guides, metrics, and benchmarks
41
+ - [JSON Improvements](./performance/PERFORMANCE-JSON-IMPROVEMENTS.md) - JSON optimization results
42
+ - [Metrics Guide](./performance/PERFORMANCE-METRICS-GUIDE.md) - Performance tracking and analysis
43
+
44
+ ### 🔧 [Bug Fixes](./fixes/)
45
+ Bug fix documentation and patch reports
46
+ - [Pattern Persistence Fix](./fixes/PATTERN_PERSISTENCE_FIX.md) - v2.7.1 critical fix
47
+ - [Pattern Fix Confirmation](./fixes/PATTERN_FIX_CONFIRMATION.md) - Verification and testing
48
+ - [CLI Memory Commands](./fixes/CLI-MEMORY-COMMANDS-WORKING.md) - Memory command fixes
49
+
50
+ ### 🛠️ [Development](./development/)
51
+ Internal development reports and implementation details
52
+ - [Agent 1 Completion Report](./development/AGENT1_COMPLETION_REPORT.md) - AgentDB integration agent
53
+ - [Final Init Structure](./development/FINAL_INIT_STRUCTURE.md) - Initialization architecture
54
+ - [Commands to Skills Migration](./development/COMMANDS_TO_SKILLS_MIGRATION.md) - Migration guide
55
+
56
+ ### ✅ [Validation](./validation/)
57
+ Test reports and validation results
58
+ - [Docker Verification Report](./validation/DOCKER_VERIFICATION_REPORT.md) - Docker testing results
59
+
60
+ ### 📚 [User Guides](./guides/)
61
+ Tutorials and learning resources
62
+ - [Skills Tutorial](./guides/skills-tutorial.md) - Complete guide to 25 Claude Flow skills
63
+
64
+ ### 🔌 [Integrations](./integrations/)
65
+ Third-party platform integrations
66
+ - **ReasoningBank** (16 docs) - AI reasoning integration
67
+ - **Agentic Flow** (5 docs) - Agent flow system
68
+ - **Agent Booster** - Performance optimization
69
+ - **Epic SDK** - SDK integration
70
+
71
+ ### 🏗️ Additional Resources
72
+ - [Architecture](./architecture/) - System architecture documentation
73
+ - [Experimental](./experimental/) - Experimental features
74
+ - [Reference](./reference/) - API and command reference
75
+ - [Setup](./setup/) - Setup and configuration guides
76
+ - [CI/CD](./ci-cd/) - Continuous integration workflows
77
+ - [SDK](./sdk/) - SDK documentation
78
+ - [Wiki](./wiki/) - Additional documentation
79
+
20
80
  ## 🚀 Quick Links
21
81
 
22
82
  - **Getting Started**: See [USER_GUIDE.md](USER_GUIDE.md#getting-started)
23
83
  - **API Reference**: See [API_DOCUMENTATION.md](API_DOCUMENTATION.md)
24
84
  - **Agent Catalog**: See [AGENTS.md](AGENTS.md)
25
85
  - **Deployment**: See [DEPLOYMENT.md](DEPLOYMENT.md)
86
+ - **Skills Tutorial**: See [Skills Tutorial](./guides/skills-tutorial.md)
87
+ - **AgentDB Integration**: See [AgentDB](./agentdb/)
88
+
89
+ ## 🎯 By User Type
90
+
91
+ ### 👨‍💻 **Developers**
92
+ 1. [Quick Start Guide](../README.md#-quick-start) - Get up and running
93
+ 2. [Skills Tutorial](./guides/skills-tutorial.md) - Natural language skill activation
94
+ 3. [SPARC Development](SPARC.md) - Structured development methodology
95
+ 4. [API Reference](API_DOCUMENTATION.md) - Complete endpoint documentation
96
+
97
+ ### 🏢 **DevOps/Operations**
98
+ 1. [Deployment Guide](DEPLOYMENT.md) - Production deployment
99
+ 2. [Architecture Overview](ARCHITECTURE.md) - System design
100
+ 3. [Docker Verification](./validation/DOCKER_VERIFICATION_REPORT.md) - Testing reports
101
+
102
+ ### 👑 **Technical Leaders**
103
+ 1. [System Architecture](ARCHITECTURE.md#system-overview) - High-level design
104
+ 2. [Performance Metrics](./performance/) - Benchmarks and optimization
105
+ 3. [AgentDB Integration](./agentdb/) - 96x-164x performance improvements
106
+
107
+ ## 📊 Performance Highlights
108
+
109
+ - **96x-164x faster search** - AgentDB vector search improvements
110
+ - **4-32x memory reduction** - Quantization benefits
111
+ - **84.8% SWE-Bench solve rate** - Industry-leading performance
112
+ - **32.3% token reduction** - Efficient context management
113
+ - **2.8-4.4x speed improvement** - Parallel coordination
26
114
 
27
115
  ## 📞 Support
28
116
 
@@ -32,4 +120,4 @@ Welcome to the Claude-Flow documentation! This directory contains comprehensive
32
120
 
33
121
  ---
34
122
 
35
- *Last Updated: January 2025 | Version: 2.0.0-alpha.88*
123
+ *Last Updated: January 2025 | Version: v2.7.1*