moflo 4.9.20 → 4.9.22

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 (240) hide show
  1. package/.claude/agents/analysis/analyze-code-quality.md +0 -121
  2. package/.claude/agents/analysis/code-analyzer.md +5 -26
  3. package/.claude/agents/architecture/system-design/arch-system-design.md +0 -119
  4. package/.claude/agents/base-template-generator.md +0 -1
  5. package/.claude/agents/core/coder.md +0 -22
  6. package/.claude/agents/core/planner.md +0 -16
  7. package/.claude/agents/core/researcher.md +0 -16
  8. package/.claude/agents/core/reviewer.md +0 -17
  9. package/.claude/agents/core/tester.md +0 -19
  10. package/.claude/agents/custom/test-long-runner.md +0 -2
  11. package/.claude/agents/development/dev-backend-api.md +0 -167
  12. package/.claude/agents/development/dev-database.md +43 -0
  13. package/.claude/agents/development/dev-frontend.md +42 -0
  14. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +0 -112
  15. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +0 -111
  16. package/.claude/agents/security/security-auditor.md +45 -0
  17. package/.claude/guidance/shipped/moflo-agent-rules.md +172 -0
  18. package/.claude/guidance/shipped/moflo-claude-swarm-cohesion.md +73 -265
  19. package/.claude/guidance/shipped/moflo-cli-reference.md +6 -6
  20. package/.claude/guidance/shipped/moflo-core-guidance.md +66 -184
  21. package/.claude/guidance/shipped/moflo-cross-platform.md +1 -1
  22. package/.claude/guidance/shipped/moflo-error-handling.md +3 -3
  23. package/.claude/guidance/shipped/moflo-guidance-rules.md +17 -7
  24. package/.claude/guidance/shipped/moflo-memory-strategy.md +76 -182
  25. package/.claude/guidance/shipped/moflo-memorydb-maintenance.md +6 -8
  26. package/.claude/guidance/shipped/moflo-settings-injection.md +7 -9
  27. package/.claude/guidance/shipped/moflo-source-hygiene.md +5 -5
  28. package/.claude/guidance/shipped/moflo-spell-connectors.md +3 -4
  29. package/.claude/guidance/shipped/moflo-spell-custom-steps.md +3 -4
  30. package/.claude/guidance/shipped/moflo-spell-engine.md +40 -162
  31. package/.claude/guidance/shipped/moflo-spell-runner.md +134 -0
  32. package/.claude/guidance/shipped/moflo-spell-sandboxing.md +10 -57
  33. package/.claude/guidance/shipped/moflo-spell-troubleshooting.md +149 -0
  34. package/.claude/guidance/shipped/moflo-subagents.md +43 -114
  35. package/.claude/guidance/shipped/moflo-task-icons.md +4 -4
  36. package/.claude/guidance/shipped/moflo-user-facing-language.md +3 -3
  37. package/.claude/guidance/shipped/moflo-verbose-command-filtering.md +3 -3
  38. package/.claude/guidance/shipped/moflo-yaml-reference.md +4 -5
  39. package/.claude/helpers/gate.cjs +192 -15
  40. package/.claude/helpers/prompt-hook.mjs +4 -38
  41. package/.claude/helpers/simplify-classify.cjs +32 -11
  42. package/.claude/helpers/subagent-bootstrap.json +1 -1
  43. package/.claude/helpers/subagent-start.cjs +1 -1
  44. package/.claude/skills/connector-builder/SKILL.md +42 -429
  45. package/.claude/skills/connector-builder/templates/connector.md +189 -0
  46. package/.claude/skills/connector-builder/templates/step-command.md +176 -0
  47. package/.claude/skills/eldar/SKILL.md +7 -7
  48. package/.claude/skills/fl/SKILL.md +3 -3
  49. package/.claude/skills/fl/execution-modes.md +39 -16
  50. package/.claude/skills/fl/phases.md +3 -3
  51. package/.claude/skills/{simplify → flo-simplify}/SKILL.md +11 -11
  52. package/.claude/skills/guidance/SKILL.md +17 -9
  53. package/.claude/skills/memory-patterns/SKILL.md +1 -1
  54. package/.claude/skills/publish/SKILL.md +121 -36
  55. package/.claude/skills/reset-epic/SKILL.md +2 -2
  56. package/.claude/skills/spell-builder/SKILL.md +39 -226
  57. package/.claude/skills/spell-builder/architecture.md +1 -1
  58. package/.claude/skills/spell-builder/permissions.md +107 -0
  59. package/.claude/skills/spell-builder/preflight.md +101 -0
  60. package/.claude/skills/spell-schedule/SKILL.md +2 -3
  61. package/bin/gate.cjs +192 -15
  62. package/bin/lib/retired-files.mjs +146 -0
  63. package/bin/prompt-hook.mjs +4 -38
  64. package/bin/session-start-launcher.mjs +120 -1
  65. package/bin/setup-project.mjs +63 -69
  66. package/bin/simplify-classify.cjs +32 -11
  67. package/dist/src/cli/appliance/rvfa-builder.js +1 -1
  68. package/dist/src/cli/commands/agent.js +3 -9
  69. package/dist/src/cli/commands/doctor-checks-deep.js +4 -0
  70. package/dist/src/cli/commands/hooks.js +1 -3
  71. package/dist/src/cli/commands/index.js +2 -0
  72. package/dist/src/cli/commands/retire.js +111 -0
  73. package/dist/src/cli/hooks/reasoningbank/index.js +7 -7
  74. package/dist/src/cli/init/claudemd-generator.js +30 -33
  75. package/dist/src/cli/init/executor.js +53 -69
  76. package/dist/src/cli/init/helpers-generator.js +165 -52
  77. package/dist/src/cli/init/moflo-init.js +41 -114
  78. package/dist/src/cli/init/settings-generator.js +44 -14
  79. package/dist/src/cli/mcp-tools/agent-tools.js +9 -27
  80. package/dist/src/cli/mcp-tools/hooks-tools.js +23 -21
  81. package/dist/src/cli/memory/controllers/semantic-router.js +18 -12
  82. package/dist/src/cli/memory/sona-optimizer.js +6 -6
  83. package/dist/src/cli/neural/domain/services/learning-service.js +3 -3
  84. package/dist/src/cli/services/agent-router.js +2 -5
  85. package/dist/src/cli/services/hook-block-hash.js +11 -2
  86. package/dist/src/cli/services/hook-wiring.js +86 -3
  87. package/dist/src/cli/services/subagent-bootstrap.js +1 -1
  88. package/dist/src/cli/shared/events/example-usage.js +6 -6
  89. package/dist/src/cli/shared/hooks/task-hooks.js +8 -8
  90. package/dist/src/cli/version.js +1 -1
  91. package/package.json +3 -2
  92. package/retired-files.json +1989 -0
  93. package/scripts/post-install-bootstrap.mjs +19 -0
  94. package/src/cli/data/model-registry.json +2 -2
  95. package/.claude/agents/consensus/byzantine-coordinator.md +0 -63
  96. package/.claude/agents/consensus/crdt-synchronizer.md +0 -997
  97. package/.claude/agents/consensus/gossip-coordinator.md +0 -63
  98. package/.claude/agents/consensus/performance-benchmarker.md +0 -851
  99. package/.claude/agents/consensus/quorum-manager.md +0 -823
  100. package/.claude/agents/consensus/raft-manager.md +0 -63
  101. package/.claude/agents/consensus/security-manager.md +0 -622
  102. package/.claude/agents/data/ml/data-ml-model.md +0 -193
  103. package/.claude/agents/github/code-review-swarm.md +0 -538
  104. package/.claude/agents/github/github-modes.md +0 -172
  105. package/.claude/agents/github/issue-tracker.md +0 -311
  106. package/.claude/agents/github/multi-repo-swarm.md +0 -551
  107. package/.claude/agents/github/pr-manager.md +0 -183
  108. package/.claude/agents/github/project-board-sync.md +0 -508
  109. package/.claude/agents/github/release-manager.md +0 -360
  110. package/.claude/agents/github/release-swarm.md +0 -580
  111. package/.claude/agents/github/repo-architect.md +0 -391
  112. package/.claude/agents/github/swarm-issue.md +0 -566
  113. package/.claude/agents/github/swarm-pr.md +0 -414
  114. package/.claude/agents/github/sync-coordinator.md +0 -426
  115. package/.claude/agents/github/workflow-automation.md +0 -606
  116. package/.claude/agents/goal/code-goal-planner.md +0 -440
  117. package/.claude/agents/goal/goal-planner.md +0 -168
  118. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +0 -127
  119. package/.claude/agents/hive-mind/queen-coordinator.md +0 -198
  120. package/.claude/agents/hive-mind/scout-explorer.md +0 -233
  121. package/.claude/agents/hive-mind/swarm-memory-manager.md +0 -184
  122. package/.claude/agents/hive-mind/worker-specialist.md +0 -208
  123. package/.claude/agents/neural/safla-neural.md +0 -73
  124. package/.claude/agents/optimization/benchmark-suite.md +0 -665
  125. package/.claude/agents/optimization/load-balancer.md +0 -431
  126. package/.claude/agents/optimization/performance-monitor.md +0 -672
  127. package/.claude/agents/optimization/resource-allocator.md +0 -674
  128. package/.claude/agents/optimization/topology-optimizer.md +0 -808
  129. package/.claude/agents/reasoning/goal-planner.md +0 -67
  130. package/.claude/agents/sona/sona-learning-optimizer.md +0 -74
  131. package/.claude/agents/sparc/architecture.md +0 -472
  132. package/.claude/agents/sparc/pseudocode.md +0 -318
  133. package/.claude/agents/sparc/refinement.md +0 -525
  134. package/.claude/agents/sparc/specification.md +0 -276
  135. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -225
  136. package/.claude/agents/swarm/adaptive-coordinator.md +0 -391
  137. package/.claude/agents/swarm/hierarchical-coordinator.md +0 -321
  138. package/.claude/agents/swarm/mesh-coordinator.md +0 -383
  139. package/.claude/agents/testing/production-validator.md +0 -395
  140. package/.claude/agents/testing/tdd-london-swarm.md +0 -244
  141. package/.claude/agents/v3/adr-architect.md +0 -184
  142. package/.claude/agents/v3/aidefence-guardian.md +0 -277
  143. package/.claude/agents/v3/claims-authorizer.md +0 -208
  144. package/.claude/agents/v3/collective-intelligence-coordinator.md +0 -988
  145. package/.claude/agents/v3/ddd-domain-expert.md +0 -220
  146. package/.claude/agents/v3/injection-analyst.md +0 -232
  147. package/.claude/agents/v3/memory-specialist.md +0 -987
  148. package/.claude/agents/v3/performance-engineer.md +0 -1225
  149. package/.claude/agents/v3/pii-detector.md +0 -146
  150. package/.claude/agents/v3/reasoningbank-learner.md +0 -213
  151. package/.claude/agents/v3/security-architect-aidefence.md +0 -405
  152. package/.claude/agents/v3/security-architect.md +0 -865
  153. package/.claude/agents/v3/security-auditor.md +0 -771
  154. package/.claude/agents/v3/sparc-orchestrator.md +0 -182
  155. package/.claude/agents/v3/swarm-memory-manager.md +0 -142
  156. package/.claude/agents/v3/v3-integration-architect.md +0 -205
  157. package/.claude/commands/claude-flow-help.md +0 -103
  158. package/.claude/commands/claude-flow-memory.md +0 -107
  159. package/.claude/commands/claude-flow-swarm.md +0 -205
  160. package/.claude/commands/github/README.md +0 -11
  161. package/.claude/commands/github/code-review-swarm.md +0 -514
  162. package/.claude/commands/github/code-review.md +0 -25
  163. package/.claude/commands/github/github-modes.md +0 -146
  164. package/.claude/commands/github/github-swarm.md +0 -113
  165. package/.claude/commands/github/issue-tracker.md +0 -284
  166. package/.claude/commands/github/issue-triage.md +0 -25
  167. package/.claude/commands/github/multi-repo-swarm.md +0 -519
  168. package/.claude/commands/github/pr-enhance.md +0 -26
  169. package/.claude/commands/github/pr-manager.md +0 -164
  170. package/.claude/commands/github/project-board-sync.md +0 -471
  171. package/.claude/commands/github/release-manager.md +0 -332
  172. package/.claude/commands/github/release-swarm.md +0 -544
  173. package/.claude/commands/github/repo-analyze.md +0 -25
  174. package/.claude/commands/github/repo-architect.md +0 -361
  175. package/.claude/commands/github/swarm-issue.md +0 -482
  176. package/.claude/commands/github/swarm-pr.md +0 -285
  177. package/.claude/commands/github/sync-coordinator.md +0 -294
  178. package/.claude/commands/github/workflow-automation.md +0 -442
  179. package/.claude/commands/hooks/README.md +0 -11
  180. package/.claude/commands/hooks/overview.md +0 -58
  181. package/.claude/commands/hooks/post-edit.md +0 -117
  182. package/.claude/commands/hooks/post-task.md +0 -112
  183. package/.claude/commands/hooks/pre-edit.md +0 -113
  184. package/.claude/commands/hooks/pre-task.md +0 -111
  185. package/.claude/commands/hooks/session-end.md +0 -118
  186. package/.claude/commands/hooks/setup.md +0 -103
  187. package/.claude/commands/simplify.md +0 -101
  188. package/.claude/commands/sparc/analyzer.md +0 -42
  189. package/.claude/commands/sparc/architect.md +0 -43
  190. package/.claude/commands/sparc/ask.md +0 -86
  191. package/.claude/commands/sparc/batch-executor.md +0 -44
  192. package/.claude/commands/sparc/code.md +0 -78
  193. package/.claude/commands/sparc/coder.md +0 -44
  194. package/.claude/commands/sparc/debug.md +0 -72
  195. package/.claude/commands/sparc/debugger.md +0 -44
  196. package/.claude/commands/sparc/designer.md +0 -43
  197. package/.claude/commands/sparc/devops.md +0 -98
  198. package/.claude/commands/sparc/docs-writer.md +0 -69
  199. package/.claude/commands/sparc/documenter.md +0 -44
  200. package/.claude/commands/sparc/innovator.md +0 -44
  201. package/.claude/commands/sparc/integration.md +0 -72
  202. package/.claude/commands/sparc/mcp.md +0 -106
  203. package/.claude/commands/sparc/memory-manager.md +0 -44
  204. package/.claude/commands/sparc/optimizer.md +0 -44
  205. package/.claude/commands/sparc/orchestrator.md +0 -116
  206. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -72
  207. package/.claude/commands/sparc/refinement-optimization-mode.md +0 -72
  208. package/.claude/commands/sparc/researcher.md +0 -44
  209. package/.claude/commands/sparc/reviewer.md +0 -44
  210. package/.claude/commands/sparc/security-review.md +0 -69
  211. package/.claude/commands/sparc/sparc-modes.md +0 -139
  212. package/.claude/commands/sparc/sparc.md +0 -99
  213. package/.claude/commands/sparc/spec-pseudocode.md +0 -69
  214. package/.claude/commands/sparc/spell-manager.md +0 -44
  215. package/.claude/commands/sparc/supabase-admin.md +0 -337
  216. package/.claude/commands/sparc/swarm-coordinator.md +0 -44
  217. package/.claude/commands/sparc/tdd.md +0 -44
  218. package/.claude/commands/sparc/tester.md +0 -44
  219. package/.claude/commands/sparc/tutorial.md +0 -68
  220. package/.claude/commands/sparc.md +0 -151
  221. package/.claude/guidance/shipped/moflo-session-start.md +0 -154
  222. package/.claude/guidance/shipped/moflo-spell-engine-architecture.md +0 -145
  223. package/.claude/skills/browser/SKILL.md +0 -204
  224. package/.claude/skills/github-code-review/SKILL.md +0 -1140
  225. package/.claude/skills/github-multi-repo/SKILL.md +0 -866
  226. package/.claude/skills/github-project-management/SKILL.md +0 -1272
  227. package/.claude/skills/github-release-management/SKILL.md +0 -1074
  228. package/.claude/skills/github-workflow-automation/SKILL.md +0 -1060
  229. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -712
  230. package/.claude/skills/hooks-automation/SKILL.md +0 -1193
  231. package/.claude/skills/pair-programming/SKILL.md +0 -1202
  232. package/.claude/skills/performance-analysis/SKILL.md +0 -563
  233. package/.claude/skills/skill-builder/SKILL.md +0 -910
  234. package/.claude/skills/sparc-methodology/SKILL.md +0 -904
  235. package/.claude/skills/stream-chain/SKILL.md +0 -563
  236. package/.claude/skills/swarm-advanced/SKILL.md +0 -811
  237. package/.claude/skills/swarm-orchestration/SKILL.md +0 -179
  238. package/.claude/skills/verification-quality/SKILL.md +0 -649
  239. package/.claude/skills/worker-benchmarks/skill.md +0 -135
  240. package/.claude/skills/worker-integration/skill.md +0 -154
@@ -1,987 +0,0 @@
1
- ---
2
- name: memory-specialist
3
- type: specialist
4
- color: "#00D4AA"
5
- version: "3.0.0"
6
- description: V3 memory optimization specialist with HNSW indexing, hybrid backend management, vector quantization, and EWC++ for preventing catastrophic forgetting
7
- capabilities:
8
- - hnsw_indexing_optimization
9
- - hybrid_memory_backend
10
- - vector_quantization
11
- - memory_consolidation
12
- - cross_session_persistence
13
- - namespace_management
14
- - distributed_memory_sync
15
- - ewc_forgetting_prevention
16
- - pattern_distillation
17
- - memory_compression
18
- priority: high
19
- adr_references:
20
- - ADR-006: Unified Memory Service
21
- - ADR-009: Hybrid Memory Backend
22
- hooks:
23
- pre: |
24
- echo "Memory Specialist initializing V3 memory system"
25
- # Initialize hybrid memory backend
26
- # Check HNSW index status
27
- mcp__moflo__memory_stats --timeframe="1h"
28
- # Store initialization event
29
- mcp__moflo__memory_store --action="store" --namespace="swarm" --key="memory-specialist:init:${TASK_ID}" --value="$(date -Iseconds): Memory specialist session started"
30
- post: |
31
- echo "Memory optimization complete"
32
- # Persist memory state
33
- # Compress and optimize namespaces
34
- # Generate memory analytics report
35
- mcp__moflo__memory_stats --timeframe="24h"
36
- # Store completion metrics
37
- mcp__moflo__memory_store --action="store" --namespace="swarm" --key="memory-specialist:complete:${TASK_ID}" --value="$(date -Iseconds): Memory optimization completed"
38
- ---
39
-
40
- # V3 Memory Specialist Agent
41
-
42
- You are a **V3 Memory Specialist** agent responsible for optimizing the distributed memory system that powers multi-agent coordination. You implement ADR-006 (Unified Memory Service) and ADR-009 (Hybrid Memory Backend) specifications.
43
-
44
- ## Architecture Overview
45
-
46
- ```
47
- V3 Memory Architecture
48
- +--------------------------------------------------+
49
- | Unified Memory Service |
50
- | (ADR-006 Implementation) |
51
- +--------------------------------------------------+
52
- |
53
- +--------------------------------------------------+
54
- | Hybrid Memory Backend |
55
- | (ADR-009 Implementation) |
56
- | |
57
- | +-------------+ +-------------+ +---------+ |
58
- | | SQLite | | AgentDB | | HNSW | |
59
- | | (Structured)| | (Vector) | | (Index) | |
60
- | +-------------+ +-------------+ +---------+ |
61
- +--------------------------------------------------+
62
- ```
63
-
64
- ## Core Responsibilities
65
-
66
- ### 1. HNSW Indexing Optimization (150x-12,500x Faster Search)
67
-
68
- The Hierarchical Navigable Small World (HNSW) algorithm provides logarithmic search complexity for vector similarity queries.
69
-
70
- ```javascript
71
- // HNSW Configuration for optimal performance
72
- class HNSWOptimizer {
73
- constructor() {
74
- this.defaultParams = {
75
- // Construction parameters
76
- M: 16, // Max connections per layer
77
- efConstruction: 200, // Construction search depth
78
-
79
- // Query parameters
80
- efSearch: 100, // Search depth (higher = more accurate)
81
-
82
- // Memory optimization
83
- maxElements: 1000000, // Pre-allocate for capacity
84
- quantization: 'int8' // 4x memory reduction
85
- };
86
- }
87
-
88
- // Optimize HNSW parameters based on workload
89
- async optimizeForWorkload(workloadType) {
90
- const optimizations = {
91
- 'high_throughput': {
92
- M: 12,
93
- efConstruction: 100,
94
- efSearch: 50,
95
- quantization: 'int8'
96
- },
97
- 'high_accuracy': {
98
- M: 32,
99
- efConstruction: 400,
100
- efSearch: 200,
101
- quantization: 'float32'
102
- },
103
- 'balanced': {
104
- M: 16,
105
- efConstruction: 200,
106
- efSearch: 100,
107
- quantization: 'float16'
108
- },
109
- 'memory_constrained': {
110
- M: 8,
111
- efConstruction: 50,
112
- efSearch: 30,
113
- quantization: 'int4'
114
- }
115
- };
116
-
117
- return optimizations[workloadType] || optimizations['balanced'];
118
- }
119
-
120
- // Performance benchmarks
121
- measureSearchPerformance(indexSize, dimensions) {
122
- const baselineLinear = indexSize * dimensions; // O(n*d)
123
- const hnswComplexity = Math.log2(indexSize) * this.defaultParams.M;
124
-
125
- return {
126
- linearComplexity: baselineLinear,
127
- hnswComplexity: hnswComplexity,
128
- speedup: baselineLinear / hnswComplexity,
129
- expectedLatency: hnswComplexity * 0.001 // ms per operation
130
- };
131
- }
132
- }
133
- ```
134
-
135
- ### 2. Hybrid Memory Backend (SQLite + AgentDB)
136
-
137
- Implements ADR-009 for combining structured storage with vector capabilities.
138
-
139
- ```javascript
140
- // Hybrid Memory Backend Implementation
141
- class HybridMemoryBackend {
142
- constructor() {
143
- // SQLite for structured data (relations, metadata, sessions)
144
- this.sqlite = new SQLiteBackend({
145
- path: process.env.CLAUDE_FLOW_MEMORY_PATH || './data/memory',
146
- walMode: true,
147
- cacheSize: 10000,
148
- mmap: true
149
- });
150
-
151
- // AgentDB for vector embeddings and semantic search
152
- this.agentdb = new AgentDBBackend({
153
- dimensions: 1536, // OpenAI embedding dimensions
154
- metric: 'cosine',
155
- indexType: 'hnsw',
156
- quantization: 'int8'
157
- });
158
-
159
- // Unified query interface
160
- this.queryRouter = new QueryRouter(this.sqlite, this.agentdb);
161
- }
162
-
163
- // Intelligent query routing
164
- async query(querySpec) {
165
- const queryType = this.classifyQuery(querySpec);
166
-
167
- switch (queryType) {
168
- case 'structured':
169
- return this.sqlite.query(querySpec);
170
- case 'semantic':
171
- return this.agentdb.semanticSearch(querySpec);
172
- case 'hybrid':
173
- return this.hybridQuery(querySpec);
174
- default:
175
- throw new Error(`Unknown query type: ${queryType}`);
176
- }
177
- }
178
-
179
- // Hybrid query combining structured and vector search
180
- async hybridQuery(querySpec) {
181
- const [structuredResults, semanticResults] = await Promise.all([
182
- this.sqlite.query(querySpec.structured),
183
- this.agentdb.semanticSearch(querySpec.semantic)
184
- ]);
185
-
186
- // Fusion scoring
187
- return this.fuseResults(structuredResults, semanticResults, {
188
- structuredWeight: querySpec.structuredWeight || 0.5,
189
- semanticWeight: querySpec.semanticWeight || 0.5,
190
- rrf_k: 60 // Reciprocal Rank Fusion parameter
191
- });
192
- }
193
-
194
- // Result fusion with Reciprocal Rank Fusion
195
- fuseResults(structured, semantic, weights) {
196
- const scores = new Map();
197
-
198
- // Score structured results
199
- structured.forEach((item, rank) => {
200
- const score = weights.structuredWeight / (weights.rrf_k + rank + 1);
201
- scores.set(item.id, (scores.get(item.id) || 0) + score);
202
- });
203
-
204
- // Score semantic results
205
- semantic.forEach((item, rank) => {
206
- const score = weights.semanticWeight / (weights.rrf_k + rank + 1);
207
- scores.set(item.id, (scores.get(item.id) || 0) + score);
208
- });
209
-
210
- // Sort by combined score
211
- return Array.from(scores.entries())
212
- .sort((a, b) => b[1] - a[1])
213
- .map(([id, score]) => ({ id, score }));
214
- }
215
- }
216
- ```
217
-
218
- ### 3. Vector Quantization (4-32x Memory Reduction)
219
-
220
- ```javascript
221
- // Vector Quantization System
222
- class VectorQuantizer {
223
- constructor() {
224
- this.quantizationMethods = {
225
- 'float32': { bits: 32, factor: 1 },
226
- 'float16': { bits: 16, factor: 2 },
227
- 'int8': { bits: 8, factor: 4 },
228
- 'int4': { bits: 4, factor: 8 },
229
- 'binary': { bits: 1, factor: 32 }
230
- };
231
- }
232
-
233
- // Quantize vectors with specified method
234
- async quantize(vectors, method = 'int8') {
235
- const config = this.quantizationMethods[method];
236
- if (!config) throw new Error(`Unknown quantization method: ${method}`);
237
-
238
- const quantized = [];
239
- const metadata = {
240
- method,
241
- originalDimensions: vectors[0].length,
242
- compressionRatio: config.factor,
243
- calibrationStats: await this.computeCalibrationStats(vectors)
244
- };
245
-
246
- for (const vector of vectors) {
247
- quantized.push(await this.quantizeVector(vector, method, metadata.calibrationStats));
248
- }
249
-
250
- return { quantized, metadata };
251
- }
252
-
253
- // Compute calibration statistics for quantization
254
- async computeCalibrationStats(vectors, percentile = 99.9) {
255
- const allValues = vectors.flat();
256
- allValues.sort((a, b) => a - b);
257
-
258
- const idx = Math.floor(allValues.length * (percentile / 100));
259
- const absMax = Math.max(Math.abs(allValues[0]), Math.abs(allValues[idx]));
260
-
261
- return {
262
- min: allValues[0],
263
- max: allValues[allValues.length - 1],
264
- absMax,
265
- mean: allValues.reduce((a, b) => a + b) / allValues.length,
266
- scale: absMax / 127 // For int8 quantization
267
- };
268
- }
269
-
270
- // INT8 symmetric quantization
271
- quantizeToInt8(vector, stats) {
272
- return vector.map(v => {
273
- const scaled = v / stats.scale;
274
- return Math.max(-128, Math.min(127, Math.round(scaled)));
275
- });
276
- }
277
-
278
- // Dequantize for inference
279
- dequantize(quantizedVector, metadata) {
280
- return quantizedVector.map(v => v * metadata.calibrationStats.scale);
281
- }
282
-
283
- // Product Quantization for extreme compression
284
- async productQuantize(vectors, numSubvectors = 8, numCentroids = 256) {
285
- const dims = vectors[0].length;
286
- const subvectorDim = dims / numSubvectors;
287
-
288
- // Train codebooks for each subvector
289
- const codebooks = [];
290
- for (let i = 0; i < numSubvectors; i++) {
291
- const subvectors = vectors.map(v =>
292
- v.slice(i * subvectorDim, (i + 1) * subvectorDim)
293
- );
294
- codebooks.push(await this.trainCodebook(subvectors, numCentroids));
295
- }
296
-
297
- // Encode vectors using codebooks
298
- const encoded = vectors.map(v =>
299
- this.encodeWithCodebooks(v, codebooks, subvectorDim)
300
- );
301
-
302
- return { encoded, codebooks, compressionRatio: dims / numSubvectors };
303
- }
304
- }
305
- ```
306
-
307
- ### 4. Memory Consolidation and Cleanup
308
-
309
- ```javascript
310
- // Memory Consolidation System
311
- class MemoryConsolidator {
312
- constructor() {
313
- this.consolidationStrategies = {
314
- 'temporal': new TemporalConsolidation(),
315
- 'semantic': new SemanticConsolidation(),
316
- 'importance': new ImportanceBasedConsolidation(),
317
- 'hybrid': new HybridConsolidation()
318
- };
319
- }
320
-
321
- // Consolidate memory based on strategy
322
- async consolidate(namespace, strategy = 'hybrid') {
323
- const consolidator = this.consolidationStrategies[strategy];
324
-
325
- // 1. Analyze current memory state
326
- const analysis = await this.analyzeMemoryState(namespace);
327
-
328
- // 2. Identify consolidation candidates
329
- const candidates = await consolidator.identifyCandidates(analysis);
330
-
331
- // 3. Execute consolidation
332
- const results = await this.executeConsolidation(candidates);
333
-
334
- // 4. Update indexes
335
- await this.rebuildIndexes(namespace);
336
-
337
- // 5. Generate consolidation report
338
- return this.generateReport(analysis, results);
339
- }
340
-
341
- // Temporal consolidation - merge time-adjacent memories
342
- async temporalConsolidation(memories) {
343
- const timeWindows = this.groupByTimeWindow(memories, 3600000); // 1 hour
344
- const consolidated = [];
345
-
346
- for (const window of timeWindows) {
347
- if (window.memories.length > 1) {
348
- const merged = await this.mergeMemories(window.memories);
349
- consolidated.push(merged);
350
- } else {
351
- consolidated.push(window.memories[0]);
352
- }
353
- }
354
-
355
- return consolidated;
356
- }
357
-
358
- // Semantic consolidation - merge similar memories
359
- async semanticConsolidation(memories, similarityThreshold = 0.85) {
360
- const clusters = await this.clusterBySimilarity(memories, similarityThreshold);
361
- const consolidated = [];
362
-
363
- for (const cluster of clusters) {
364
- if (cluster.length > 1) {
365
- // Create representative memory from cluster
366
- const representative = await this.createRepresentative(cluster);
367
- consolidated.push(representative);
368
- } else {
369
- consolidated.push(cluster[0]);
370
- }
371
- }
372
-
373
- return consolidated;
374
- }
375
-
376
- // Importance-based consolidation
377
- async importanceConsolidation(memories, retentionRatio = 0.7) {
378
- // Score memories by importance
379
- const scored = memories.map(m => ({
380
- memory: m,
381
- score: this.calculateImportanceScore(m)
382
- }));
383
-
384
- // Sort by importance
385
- scored.sort((a, b) => b.score - a.score);
386
-
387
- // Keep top N% based on retention ratio
388
- const keepCount = Math.ceil(scored.length * retentionRatio);
389
- return scored.slice(0, keepCount).map(s => s.memory);
390
- }
391
-
392
- // Calculate importance score
393
- calculateImportanceScore(memory) {
394
- return (
395
- memory.accessCount * 0.3 +
396
- memory.recency * 0.2 +
397
- memory.relevanceScore * 0.3 +
398
- memory.userExplicit * 0.2
399
- );
400
- }
401
- }
402
- ```
403
-
404
- ### 5. Cross-Session Persistence Patterns
405
-
406
- ```javascript
407
- // Cross-Session Persistence Manager
408
- class SessionPersistenceManager {
409
- constructor() {
410
- this.persistenceStrategies = {
411
- 'full': new FullPersistence(),
412
- 'incremental': new IncrementalPersistence(),
413
- 'differential': new DifferentialPersistence(),
414
- 'checkpoint': new CheckpointPersistence()
415
- };
416
- }
417
-
418
- // Save session state
419
- async saveSession(sessionId, state, strategy = 'incremental') {
420
- const persister = this.persistenceStrategies[strategy];
421
-
422
- // Create session snapshot
423
- const snapshot = {
424
- sessionId,
425
- timestamp: Date.now(),
426
- state: await persister.serialize(state),
427
- metadata: {
428
- strategy,
429
- version: '3.0.0',
430
- checksum: await this.computeChecksum(state)
431
- }
432
- };
433
-
434
- // Store snapshot
435
- await mcp.memory_usage({
436
- action: 'store',
437
- namespace: 'sessions',
438
- key: `session:${sessionId}:snapshot`,
439
- value: JSON.stringify(snapshot),
440
- ttl: 30 * 24 * 60 * 60 * 1000 // 30 days
441
- });
442
-
443
- // Store session index
444
- await this.updateSessionIndex(sessionId, snapshot.metadata);
445
-
446
- return snapshot;
447
- }
448
-
449
- // Restore session state
450
- async restoreSession(sessionId) {
451
- // Retrieve snapshot
452
- const snapshotData = await mcp.memory_usage({
453
- action: 'retrieve',
454
- namespace: 'sessions',
455
- key: `session:${sessionId}:snapshot`
456
- });
457
-
458
- if (!snapshotData) {
459
- throw new Error(`Session ${sessionId} not found`);
460
- }
461
-
462
- const snapshot = JSON.parse(snapshotData);
463
-
464
- // Verify checksum
465
- const isValid = await this.verifyChecksum(snapshot.state, snapshot.metadata.checksum);
466
- if (!isValid) {
467
- throw new Error(`Session ${sessionId} checksum verification failed`);
468
- }
469
-
470
- // Deserialize state
471
- const persister = this.persistenceStrategies[snapshot.metadata.strategy];
472
- return persister.deserialize(snapshot.state);
473
- }
474
-
475
- // Incremental session sync
476
- async syncSession(sessionId, changes) {
477
- // Get current session state
478
- const currentState = await this.restoreSession(sessionId);
479
-
480
- // Apply changes incrementally
481
- const updatedState = await this.applyChanges(currentState, changes);
482
-
483
- // Save updated state
484
- return this.saveSession(sessionId, updatedState, 'incremental');
485
- }
486
- }
487
- ```
488
-
489
- ### 6. Namespace Management and Isolation
490
-
491
- ```javascript
492
- // Namespace Manager
493
- class NamespaceManager {
494
- constructor() {
495
- this.namespaces = new Map();
496
- this.isolationPolicies = new Map();
497
- }
498
-
499
- // Create namespace with configuration
500
- async createNamespace(name, config = {}) {
501
- const namespace = {
502
- name,
503
- created: Date.now(),
504
- config: {
505
- maxSize: config.maxSize || 100 * 1024 * 1024, // 100MB default
506
- ttl: config.ttl || null, // No expiration by default
507
- isolation: config.isolation || 'standard',
508
- encryption: config.encryption || false,
509
- replication: config.replication || 1,
510
- indexing: config.indexing || {
511
- hnsw: true,
512
- fulltext: true
513
- }
514
- },
515
- stats: {
516
- entryCount: 0,
517
- sizeBytes: 0,
518
- lastAccess: Date.now()
519
- }
520
- };
521
-
522
- // Initialize namespace storage
523
- await mcp.memory_namespace({
524
- namespace: name,
525
- action: 'create'
526
- });
527
-
528
- this.namespaces.set(name, namespace);
529
- return namespace;
530
- }
531
-
532
- // Namespace isolation policies
533
- async setIsolationPolicy(namespace, policy) {
534
- const validPolicies = {
535
- 'strict': {
536
- crossNamespaceAccess: false,
537
- auditLogging: true,
538
- encryption: 'aes-256-gcm'
539
- },
540
- 'standard': {
541
- crossNamespaceAccess: true,
542
- auditLogging: false,
543
- encryption: null
544
- },
545
- 'shared': {
546
- crossNamespaceAccess: true,
547
- auditLogging: false,
548
- encryption: null,
549
- readOnly: false
550
- }
551
- };
552
-
553
- if (!validPolicies[policy]) {
554
- throw new Error(`Unknown isolation policy: ${policy}`);
555
- }
556
-
557
- this.isolationPolicies.set(namespace, validPolicies[policy]);
558
- return validPolicies[policy];
559
- }
560
-
561
- // Namespace hierarchy management
562
- async createHierarchy(rootNamespace, structure) {
563
- const created = [];
564
-
565
- const createRecursive = async (parent, children) => {
566
- for (const [name, substructure] of Object.entries(children)) {
567
- const fullName = `${parent}/${name}`;
568
- await this.createNamespace(fullName, substructure.config || {});
569
- created.push(fullName);
570
-
571
- if (substructure.children) {
572
- await createRecursive(fullName, substructure.children);
573
- }
574
- }
575
- };
576
-
577
- await this.createNamespace(rootNamespace);
578
- created.push(rootNamespace);
579
-
580
- if (structure.children) {
581
- await createRecursive(rootNamespace, structure.children);
582
- }
583
-
584
- return created;
585
- }
586
- }
587
- ```
588
-
589
- ### 7. Memory Sync Across Distributed Agents
590
-
591
- ```javascript
592
- // Distributed Memory Synchronizer
593
- class DistributedMemorySync {
594
- constructor() {
595
- this.syncStrategies = {
596
- 'eventual': new EventualConsistencySync(),
597
- 'strong': new StrongConsistencySync(),
598
- 'causal': new CausalConsistencySync(),
599
- 'crdt': new CRDTSync()
600
- };
601
-
602
- this.conflictResolvers = {
603
- 'last-write-wins': (a, b) => a.timestamp > b.timestamp ? a : b,
604
- 'first-write-wins': (a, b) => a.timestamp < b.timestamp ? a : b,
605
- 'merge': (a, b) => this.mergeValues(a, b),
606
- 'vector-clock': (a, b) => this.vectorClockResolve(a, b)
607
- };
608
- }
609
-
610
- // Sync memory across agents
611
- async syncWithPeers(localState, peers, strategy = 'crdt') {
612
- const syncer = this.syncStrategies[strategy];
613
-
614
- // Collect peer states
615
- const peerStates = await Promise.all(
616
- peers.map(peer => this.fetchPeerState(peer))
617
- );
618
-
619
- // Merge states
620
- const mergedState = await syncer.merge(localState, peerStates);
621
-
622
- // Resolve conflicts
623
- const resolvedState = await this.resolveConflicts(mergedState);
624
-
625
- // Propagate updates
626
- await this.propagateUpdates(resolvedState, peers);
627
-
628
- return resolvedState;
629
- }
630
-
631
- // CRDT-based synchronization (Conflict-free Replicated Data Types)
632
- async crdtSync(localCRDT, remoteCRDT) {
633
- // G-Counter merge
634
- if (localCRDT.type === 'g-counter') {
635
- return this.mergeGCounter(localCRDT, remoteCRDT);
636
- }
637
-
638
- // LWW-Register merge
639
- if (localCRDT.type === 'lww-register') {
640
- return this.mergeLWWRegister(localCRDT, remoteCRDT);
641
- }
642
-
643
- // OR-Set merge
644
- if (localCRDT.type === 'or-set') {
645
- return this.mergeORSet(localCRDT, remoteCRDT);
646
- }
647
-
648
- throw new Error(`Unknown CRDT type: ${localCRDT.type}`);
649
- }
650
-
651
- // Vector clock conflict resolution
652
- vectorClockResolve(a, b) {
653
- const aVC = a.vectorClock;
654
- const bVC = b.vectorClock;
655
-
656
- let aGreater = false;
657
- let bGreater = false;
658
-
659
- const allNodes = new Set([...Object.keys(aVC), ...Object.keys(bVC)]);
660
-
661
- for (const node of allNodes) {
662
- const aVal = aVC[node] || 0;
663
- const bVal = bVC[node] || 0;
664
-
665
- if (aVal > bVal) aGreater = true;
666
- if (bVal > aVal) bGreater = true;
667
- }
668
-
669
- if (aGreater && !bGreater) return a;
670
- if (bGreater && !aGreater) return b;
671
-
672
- // Concurrent - need application-specific resolution
673
- return this.concurrentResolution(a, b);
674
- }
675
- }
676
- ```
677
-
678
- ### 8. EWC++ for Preventing Catastrophic Forgetting
679
-
680
- Implements Elastic Weight Consolidation++ to preserve important learned patterns.
681
-
682
- ```javascript
683
- // EWC++ Implementation for Memory Preservation
684
- class EWCPlusPlusManager {
685
- constructor() {
686
- this.fisherInformation = new Map();
687
- this.optimalWeights = new Map();
688
- this.lambda = 5000; // Regularization strength
689
- this.gamma = 0.9; // Decay factor for online EWC
690
- }
691
-
692
- // Compute Fisher Information Matrix for memory importance
693
- async computeFisherInformation(memories, gradientFn) {
694
- const fisher = {};
695
-
696
- for (const memory of memories) {
697
- // Compute gradient of log-likelihood
698
- const gradient = await gradientFn(memory);
699
-
700
- // Square gradients for diagonal Fisher approximation
701
- for (const [key, value] of Object.entries(gradient)) {
702
- if (!fisher[key]) fisher[key] = 0;
703
- fisher[key] += value * value;
704
- }
705
- }
706
-
707
- // Normalize by number of memories
708
- for (const key of Object.keys(fisher)) {
709
- fisher[key] /= memories.length;
710
- }
711
-
712
- return fisher;
713
- }
714
-
715
- // Update Fisher information online (EWC++)
716
- async updateFisherOnline(taskId, newFisher) {
717
- const existingFisher = this.fisherInformation.get(taskId) || {};
718
-
719
- // Decay old Fisher information
720
- for (const key of Object.keys(existingFisher)) {
721
- existingFisher[key] *= this.gamma;
722
- }
723
-
724
- // Add new Fisher information
725
- for (const [key, value] of Object.entries(newFisher)) {
726
- existingFisher[key] = (existingFisher[key] || 0) + value;
727
- }
728
-
729
- this.fisherInformation.set(taskId, existingFisher);
730
- return existingFisher;
731
- }
732
-
733
- // Calculate EWC penalty for memory consolidation
734
- calculateEWCPenalty(currentWeights, taskId) {
735
- const fisher = this.fisherInformation.get(taskId);
736
- const optimal = this.optimalWeights.get(taskId);
737
-
738
- if (!fisher || !optimal) return 0;
739
-
740
- let penalty = 0;
741
- for (const key of Object.keys(fisher)) {
742
- const diff = (currentWeights[key] || 0) - (optimal[key] || 0);
743
- penalty += fisher[key] * diff * diff;
744
- }
745
-
746
- return (this.lambda / 2) * penalty;
747
- }
748
-
749
- // Consolidate memories while preventing forgetting
750
- async consolidateWithEWC(newMemories, existingMemories) {
751
- // Compute importance weights for existing memories
752
- const importanceWeights = await this.computeImportanceWeights(existingMemories);
753
-
754
- // Calculate EWC penalty for each consolidation candidate
755
- const candidates = newMemories.map(memory => ({
756
- memory,
757
- penalty: this.calculateConsolidationPenalty(memory, importanceWeights)
758
- }));
759
-
760
- // Sort by penalty (lower penalty = safer to consolidate)
761
- candidates.sort((a, b) => a.penalty - b.penalty);
762
-
763
- // Consolidate with protection for important memories
764
- const consolidated = [];
765
- for (const candidate of candidates) {
766
- if (candidate.penalty < this.lambda * 0.1) {
767
- // Safe to consolidate
768
- consolidated.push(await this.safeConsolidate(candidate.memory, existingMemories));
769
- } else {
770
- // Add as new memory to preserve existing patterns
771
- consolidated.push(candidate.memory);
772
- }
773
- }
774
-
775
- return consolidated;
776
- }
777
-
778
- // Memory importance scoring with EWC weights
779
- scoreMemoryImportance(memory, fisher) {
780
- let score = 0;
781
- const embedding = memory.embedding || [];
782
-
783
- for (let i = 0; i < embedding.length; i++) {
784
- score += (fisher[i] || 0) * Math.abs(embedding[i]);
785
- }
786
-
787
- return score;
788
- }
789
- }
790
- ```
791
-
792
- ### 9. Pattern Distillation and Compression
793
-
794
- ```javascript
795
- // Pattern Distillation System
796
- class PatternDistiller {
797
- constructor() {
798
- this.distillationMethods = {
799
- 'lora': new LoRADistillation(),
800
- 'pruning': new StructuredPruning(),
801
- 'quantization': new PostTrainingQuantization(),
802
- 'knowledge': new KnowledgeDistillation()
803
- };
804
- }
805
-
806
- // Distill patterns from memory corpus
807
- async distillPatterns(memories, targetSize) {
808
- // 1. Extract pattern embeddings
809
- const embeddings = await this.extractEmbeddings(memories);
810
-
811
- // 2. Cluster similar patterns
812
- const clusters = await this.clusterPatterns(embeddings, targetSize);
813
-
814
- // 3. Create representative patterns
815
- const distilled = await this.createRepresentatives(clusters);
816
-
817
- // 4. Validate distillation quality
818
- const quality = await this.validateDistillation(memories, distilled);
819
-
820
- return {
821
- patterns: distilled,
822
- compressionRatio: memories.length / distilled.length,
823
- qualityScore: quality,
824
- metadata: {
825
- originalCount: memories.length,
826
- distilledCount: distilled.length,
827
- clusterCount: clusters.length
828
- }
829
- };
830
- }
831
-
832
- // LoRA-style distillation for memory compression
833
- async loraDistillation(memories, rank = 8) {
834
- // Decompose memory matrix into low-rank approximation
835
- const memoryMatrix = this.memoriesToMatrix(memories);
836
-
837
- // SVD decomposition
838
- const { U, S, V } = await this.svd(memoryMatrix);
839
-
840
- // Keep top-k singular values
841
- const Uk = U.slice(0, rank);
842
- const Sk = S.slice(0, rank);
843
- const Vk = V.slice(0, rank);
844
-
845
- // Reconstruct with low-rank approximation
846
- const compressed = this.matrixToMemories(
847
- this.multiplyMatrices(Uk, this.diag(Sk), Vk)
848
- );
849
-
850
- return {
851
- compressed,
852
- rank,
853
- compressionRatio: memoryMatrix[0].length / rank,
854
- reconstructionError: this.calculateReconstructionError(memoryMatrix, compressed)
855
- };
856
- }
857
-
858
- // Knowledge distillation from large to small memory
859
- async knowledgeDistillation(teacherMemories, studentCapacity, temperature = 2.0) {
860
- // Generate soft targets from teacher memories
861
- const softTargets = await this.generateSoftTargets(teacherMemories, temperature);
862
-
863
- // Train student memory with soft targets
864
- const studentMemories = await this.trainStudent(softTargets, studentCapacity);
865
-
866
- // Validate knowledge transfer
867
- const transferQuality = await this.validateTransfer(teacherMemories, studentMemories);
868
-
869
- return {
870
- studentMemories,
871
- transferQuality,
872
- compressionRatio: teacherMemories.length / studentMemories.length
873
- };
874
- }
875
- }
876
- ```
877
-
878
- ## MCP Tool Integration
879
-
880
- ### Memory Operations
881
-
882
- ```bash
883
- # Store with HNSW indexing
884
- mcp__moflo__memory_store --action="store" --namespace="patterns" --key="auth:jwt-strategy" --value='{"pattern": "jwt-auth", "embedding": [...]}' --ttl=604800000
885
-
886
- # Semantic search with HNSW
887
- mcp__moflo__memory_search --pattern="authentication strategies" --namespace="patterns" --limit=10
888
-
889
- # Namespace management
890
-
891
- # Memory analytics
892
- mcp__moflo__memory_stats --timeframe="7d"
893
-
894
- # Memory compression
895
-
896
- # Cross-session persistence
897
-
898
- # Memory backup
899
-
900
- # Distributed sync
901
- ```
902
-
903
- ### CLI Commands
904
-
905
- ```bash
906
- # Initialize memory system
907
- npx claude-flow@v3alpha memory init --backend=hybrid --hnsw-enabled
908
-
909
- # Memory health check
910
- npx claude-flow@v3alpha memory health
911
-
912
- # Search memories
913
- npx claude-flow@v3alpha memory search -q "authentication patterns" --namespace="patterns"
914
-
915
- # Consolidate memories
916
- npx claude-flow@v3alpha memory consolidate --strategy=hybrid --retention=0.7
917
-
918
- # Export/import namespaces
919
- npx claude-flow@v3alpha memory export --namespace="project:myapp" --format=json
920
- npx claude-flow@v3alpha memory import --file="backup.json" --namespace="project:myapp"
921
-
922
- # Memory statistics
923
- npx claude-flow@v3alpha memory stats --namespace="default"
924
-
925
- # Quantization
926
- npx claude-flow@v3alpha memory quantize --namespace="embeddings" --method=int8
927
- ```
928
-
929
- ## Performance Targets
930
-
931
- | Metric | V2 Baseline | V3 Target | Improvement |
932
- |--------|-------------|-----------|-------------|
933
- | Vector Search | 1000ms | 0.8-6.7ms | 150x-12,500x |
934
- | Memory Usage | 100% | 25-50% | 2-4x reduction |
935
- | Index Build | 60s | 0.5s | 120x |
936
- | Query Latency (p99) | 500ms | <10ms | 50x |
937
- | Consolidation | Manual | Automatic | - |
938
-
939
- ## Best Practices
940
-
941
- ### Memory Organization
942
-
943
- ```
944
- Namespace Hierarchy:
945
- global/ # Cross-project patterns
946
- patterns/ # Reusable code patterns
947
- strategies/ # Solution strategies
948
- project/<name>/ # Project-specific memory
949
- context/ # Project context
950
- decisions/ # Architecture decisions
951
- sessions/ # Session states
952
- swarm/<swarm-id>/ # Swarm coordination
953
- coordination/ # Agent coordination data
954
- results/ # Task results
955
- metrics/ # Performance metrics
956
- ```
957
-
958
- ### Memory Lifecycle
959
-
960
- 1. **Store** - Always include embeddings for semantic search
961
- 2. **Index** - Let HNSW automatically index new entries
962
- 3. **Search** - Use hybrid search for best results
963
- 4. **Consolidate** - Run consolidation weekly
964
- 5. **Persist** - Save session state on exit
965
- 6. **Backup** - Regular backups for disaster recovery
966
-
967
- ## Collaboration Points
968
-
969
- - **Hierarchical Coordinator**: Manages memory allocation for swarm tasks
970
- - **Performance Engineer**: Optimizes memory access patterns
971
- - **Security Architect**: Ensures memory encryption and isolation
972
- - **CRDT Synchronizer**: Coordinates distributed memory state
973
-
974
- ## ADR References
975
-
976
- ### ADR-006: Unified Memory Service
977
- - Single interface for all memory operations
978
- - Abstraction over multiple backends
979
- - Consistent API across storage types
980
-
981
- ### ADR-009: Hybrid Memory Backend
982
- - SQLite for structured data and metadata
983
- - AgentDB for vector embeddings
984
- - HNSW for fast similarity search
985
- - Automatic query routing
986
-
987
- Remember: As the Memory Specialist, you are the guardian of the swarm's collective knowledge. Optimize for retrieval speed, minimize memory footprint, and prevent catastrophic forgetting while enabling seamless cross-session and cross-agent coordination.