claude-mpm 3.4.2__py3-none-any.whl → 3.4.3__py3-none-any.whl
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.
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +36 -0
- claude_mpm/services/memory_router.py +99 -6
- {claude_mpm-3.4.2.dist-info → claude_mpm-3.4.3.dist-info}/METADATA +1 -1
- {claude_mpm-3.4.2.dist-info → claude_mpm-3.4.3.dist-info}/RECORD +8 -7
- {claude_mpm-3.4.2.dist-info → claude_mpm-3.4.3.dist-info}/WHEEL +0 -0
- {claude_mpm-3.4.2.dist-info → claude_mpm-3.4.3.dist-info}/entry_points.txt +0 -0
- {claude_mpm-3.4.2.dist-info → claude_mpm-3.4.3.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-3.4.2.dist-info → claude_mpm-3.4.3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Agent Memory System
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Each agent maintains project-specific knowledge in these files. Agents read their memory file before tasks and update it when they learn something new.
|
|
5
|
+
|
|
6
|
+
## Manual Editing
|
|
7
|
+
Feel free to edit these files to:
|
|
8
|
+
- Add project-specific guidelines
|
|
9
|
+
- Remove outdated information
|
|
10
|
+
- Reorganize for better clarity
|
|
11
|
+
- Add domain-specific knowledge
|
|
12
|
+
|
|
13
|
+
## Memory Limits
|
|
14
|
+
- Max file size: 8KB (~2000 tokens)
|
|
15
|
+
- Max sections: 10
|
|
16
|
+
- Max items per section: 15
|
|
17
|
+
- Files auto-truncate when limits exceeded
|
|
18
|
+
|
|
19
|
+
## File Format
|
|
20
|
+
Standard markdown with structured sections. Agents expect:
|
|
21
|
+
- Project Architecture
|
|
22
|
+
- Implementation Guidelines
|
|
23
|
+
- Common Mistakes to Avoid
|
|
24
|
+
- Current Technical Context
|
|
25
|
+
|
|
26
|
+
## How It Works
|
|
27
|
+
1. Agents read their memory file before starting tasks
|
|
28
|
+
2. Agents add learnings during or after task completion
|
|
29
|
+
3. Files automatically enforce size limits
|
|
30
|
+
4. Developers can manually edit for accuracy
|
|
31
|
+
|
|
32
|
+
## Memory File Lifecycle
|
|
33
|
+
- Created automatically when agent first runs
|
|
34
|
+
- Updated through hook system after delegations
|
|
35
|
+
- Manually editable by developers
|
|
36
|
+
- Version controlled with project
|
|
@@ -118,6 +118,68 @@ class MemoryRouter(LoggerMixin):
|
|
|
118
118
|
'Project Coordination', 'Team Communication',
|
|
119
119
|
'Process Improvements', 'Risk Management'
|
|
120
120
|
]
|
|
121
|
+
},
|
|
122
|
+
'data_engineer': {
|
|
123
|
+
'keywords': [
|
|
124
|
+
'data', 'database', 'sql', 'pipeline', 'etl', 'elt', 'extract', 'transform',
|
|
125
|
+
'load', 'analytics', 'warehouse', 'lake', 'schema', 'migration',
|
|
126
|
+
'replication', 'streaming', 'batch', 'kafka', 'spark', 'hadoop',
|
|
127
|
+
'mongodb', 'postgres', 'mysql', 'redis', 'elasticsearch', 'index',
|
|
128
|
+
'query', 'optimization', 'performance', 'partitioning', 'sharding',
|
|
129
|
+
'normalization', 'denormalization', 'aggregation', 'cleansing',
|
|
130
|
+
'validation', 'quality', 'lineage', 'governance', 'backup', 'restore',
|
|
131
|
+
'ai api', 'openai', 'claude', 'llm', 'embedding', 'vector database'
|
|
132
|
+
],
|
|
133
|
+
'sections': [
|
|
134
|
+
'Database Architecture Patterns', 'Pipeline Design Strategies',
|
|
135
|
+
'Data Quality Standards', 'Performance Optimization Techniques'
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
'test_integration': {
|
|
139
|
+
'keywords': [
|
|
140
|
+
'integration', 'e2e', 'end-to-end', 'system test', 'workflow test',
|
|
141
|
+
'cross-system', 'api test', 'contract test', 'service test',
|
|
142
|
+
'boundary test', 'interface test', 'component test', 'smoke test',
|
|
143
|
+
'acceptance test', 'scenario test', 'user journey', 'flow test',
|
|
144
|
+
'regression', 'compatibility', 'interoperability', 'validation',
|
|
145
|
+
'verification', 'mock', 'stub', 'test data', 'test environment',
|
|
146
|
+
'test setup', 'teardown', 'isolation', 'coordination', 'synchronization',
|
|
147
|
+
'selenium', 'cypress', 'playwright', 'postman', 'newman'
|
|
148
|
+
],
|
|
149
|
+
'sections': [
|
|
150
|
+
'Integration Test Patterns', 'Cross-System Validation',
|
|
151
|
+
'Test Environment Management', 'End-to-End Workflow Testing'
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
'ops': {
|
|
155
|
+
'keywords': [
|
|
156
|
+
'deployment', 'infrastructure', 'devops', 'cicd', 'ci/cd', 'docker',
|
|
157
|
+
'container', 'kubernetes', 'helm', 'terraform', 'ansible', 'jenkins',
|
|
158
|
+
'pipeline', 'build', 'release', 'staging', 'production', 'environment',
|
|
159
|
+
'monitoring', 'logging', 'metrics', 'alerts', 'observability',
|
|
160
|
+
'scaling', 'load balancer', 'proxy', 'nginx', 'apache', 'server',
|
|
161
|
+
'network', 'firewall', 'vpc', 'aws', 'azure', 'gcp', 'cloud',
|
|
162
|
+
'backup', 'disaster recovery', 'failover', 'redundancy', 'uptime',
|
|
163
|
+
'prometheus', 'grafana', 'splunk', 'datadog', 'newrelic'
|
|
164
|
+
],
|
|
165
|
+
'sections': [
|
|
166
|
+
'Deployment Strategies', 'Infrastructure Patterns',
|
|
167
|
+
'Monitoring and Observability', 'Scaling and Performance'
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
'version_control': {
|
|
171
|
+
'keywords': [
|
|
172
|
+
'git', 'github', 'gitlab', 'bitbucket', 'branch', 'merge', 'commit',
|
|
173
|
+
'pull request', 'merge request', 'tag', 'release', 'version', 'changelog',
|
|
174
|
+
'semantic versioning', 'semver', 'workflow', 'gitflow', 'conflict',
|
|
175
|
+
'resolution', 'rebase', 'cherry-pick', 'stash', 'bisect', 'blame',
|
|
176
|
+
'diff', 'patch', 'submodule', 'hook', 'pre-commit', 'post-commit',
|
|
177
|
+
'repository', 'remote', 'origin', 'upstream', 'fork', 'clone'
|
|
178
|
+
],
|
|
179
|
+
'sections': [
|
|
180
|
+
'Branching Strategies', 'Release Management',
|
|
181
|
+
'Version Control Workflows', 'Collaboration Patterns'
|
|
182
|
+
]
|
|
121
183
|
}
|
|
122
184
|
}
|
|
123
185
|
|
|
@@ -133,6 +195,31 @@ class MemoryRouter(LoggerMixin):
|
|
|
133
195
|
super().__init__()
|
|
134
196
|
self.config = config or Config()
|
|
135
197
|
|
|
198
|
+
def get_supported_agents(self) -> List[str]:
|
|
199
|
+
"""Get list of supported agent types.
|
|
200
|
+
|
|
201
|
+
WHY: Other components need to know which agent types are supported
|
|
202
|
+
for validation and UI display purposes.
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
List of supported agent type names
|
|
206
|
+
"""
|
|
207
|
+
return list(self.AGENT_PATTERNS.keys())
|
|
208
|
+
|
|
209
|
+
def is_agent_supported(self, agent_type: str) -> bool:
|
|
210
|
+
"""Check if an agent type is supported by the memory router.
|
|
211
|
+
|
|
212
|
+
WHY: Provides validation for agent types before attempting routing.
|
|
213
|
+
This prevents errors and provides clear feedback about unsupported types.
|
|
214
|
+
|
|
215
|
+
Args:
|
|
216
|
+
agent_type: Agent type to check
|
|
217
|
+
|
|
218
|
+
Returns:
|
|
219
|
+
True if agent type is supported, False otherwise
|
|
220
|
+
"""
|
|
221
|
+
return agent_type in self.AGENT_PATTERNS
|
|
222
|
+
|
|
136
223
|
def analyze_and_route(self, content: str, context: Optional[Dict] = None) -> Dict[str, Any]:
|
|
137
224
|
"""Analyze content and determine target agent for memory storage.
|
|
138
225
|
|
|
@@ -187,7 +274,9 @@ class MemoryRouter(LoggerMixin):
|
|
|
187
274
|
"section": "Recent Learnings",
|
|
188
275
|
"confidence": 0.1,
|
|
189
276
|
"reasoning": f"Error during analysis, defaulting to {self.DEFAULT_AGENT}",
|
|
190
|
-
"error": str(e)
|
|
277
|
+
"error": str(e),
|
|
278
|
+
"timestamp": datetime.now().isoformat(),
|
|
279
|
+
"content_length": len(content) if content else 0
|
|
191
280
|
}
|
|
192
281
|
|
|
193
282
|
def test_routing_patterns(self, test_cases: List[Dict[str, str]]) -> List[Dict[str, Any]]:
|
|
@@ -283,17 +372,20 @@ class MemoryRouter(LoggerMixin):
|
|
|
283
372
|
matched_keywords = []
|
|
284
373
|
|
|
285
374
|
for keyword in patterns['keywords']:
|
|
286
|
-
# Exact keyword match
|
|
375
|
+
# Exact keyword match gets higher score
|
|
287
376
|
if keyword in content:
|
|
288
|
-
|
|
377
|
+
# Multi-word keywords get bonus score
|
|
378
|
+
bonus = 1.5 if ' ' in keyword else 1.0
|
|
379
|
+
score += bonus
|
|
289
380
|
matched_keywords.append(keyword)
|
|
290
381
|
# Partial match (word contains keyword)
|
|
291
382
|
elif any(keyword in word for word in content.split()):
|
|
292
383
|
score += 0.5
|
|
293
384
|
|
|
294
|
-
# Normalize score by
|
|
385
|
+
# Normalize score by square root to avoid penalizing agents with many keywords
|
|
295
386
|
if patterns['keywords']:
|
|
296
|
-
|
|
387
|
+
import math
|
|
388
|
+
score = score / math.sqrt(len(patterns['keywords']))
|
|
297
389
|
|
|
298
390
|
scores[agent] = {
|
|
299
391
|
'score': score,
|
|
@@ -361,7 +453,8 @@ class MemoryRouter(LoggerMixin):
|
|
|
361
453
|
best_agent = agent
|
|
362
454
|
|
|
363
455
|
# If no clear winner, use default
|
|
364
|
-
|
|
456
|
+
# Lowered threshold to handle diverse agent patterns better
|
|
457
|
+
if best_score < 0.05:
|
|
365
458
|
return self.DEFAULT_AGENT, 0.1
|
|
366
459
|
|
|
367
460
|
# Convert score to confidence (0.0 to 1.0)
|
|
@@ -25,6 +25,7 @@ claude_mpm/agents/templates/research.json,sha256=10XO-W7cV_SGP16SHboagjbNUlKUoGf
|
|
|
25
25
|
claude_mpm/agents/templates/security.json,sha256=DkiB98uJf5mo5nP7EIhu8hhsvwGhOnR_FA60EJGuNBk,6741
|
|
26
26
|
claude_mpm/agents/templates/test_integration.json,sha256=QqJtUABq23MlkldAaomTviopOvM7hqxNWbaYbUVCJpk,7620
|
|
27
27
|
claude_mpm/agents/templates/version_control.json,sha256=H9GzDk8Ys8KmOEgfTWGr1GakKFscbd_907ObmAqzlzc,6535
|
|
28
|
+
claude_mpm/agents/templates/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
|
|
28
29
|
claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json,sha256=lLso4RHXVTQmX4A1XwF84kT59zZDblPO1xCgBj4S4x8,5060
|
|
29
30
|
claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json,sha256=snfJW2yW9aMv9ldCSIWW7zwnyoQRx5u7xLMkNlfus9I,2258
|
|
30
31
|
claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json,sha256=21o8TGCM9TO6eocSV9Ev5MmCq-xYwwCqMU7KQESaY2Q,8479
|
|
@@ -140,7 +141,7 @@ claude_mpm/services/health_monitor.py,sha256=utZf8RsiUWXRYIszAC9nHdMy3YSqzedIDBL
|
|
|
140
141
|
claude_mpm/services/hook_service.py,sha256=hkpN8mXXYCwzdLVJwsoVg_fw5seEmei-q0ZzQyNoCXA,14200
|
|
141
142
|
claude_mpm/services/memory_builder.py,sha256=Y_Gx0IIJhGjUx1NAjslC1MFPbRaXuoRdkQX69_zjrFg,34075
|
|
142
143
|
claude_mpm/services/memory_optimizer.py,sha256=uydUqx0Nd3ib7KNfKnlR9tPW5MLSUC5OAJg0GH2Jj4E,23638
|
|
143
|
-
claude_mpm/services/memory_router.py,sha256=
|
|
144
|
+
claude_mpm/services/memory_router.py,sha256=oki6D2ma1KWdgP6uSfu8xvLzRpk-k3PGw6CO5XDMGPY,22504
|
|
144
145
|
claude_mpm/services/project_analyzer.py,sha256=3Ub_Tpcxm0LnYgcAipebvWr6TfofVqZNMkANejA2C44,33564
|
|
145
146
|
claude_mpm/services/recovery_manager.py,sha256=K46vXbEWbxFUoS42s34OxN1rkddpisGG7E_ZdRyAZ-A,25792
|
|
146
147
|
claude_mpm/services/shared_prompt_cache.py,sha256=D04lrRWyg0lHyqGcAHy7IYvRHRKSg6EOpAJwBUPa2wk,29890
|
|
@@ -199,9 +200,9 @@ claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E
|
|
|
199
200
|
claude_mpm/utils/paths.py,sha256=Xv0SZWdZRkRjN9e6clBcA165ya00GNQxt7SwMz51tfA,10153
|
|
200
201
|
claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
|
|
201
202
|
claude_mpm/validation/agent_validator.py,sha256=GCA2b2rKhKDeaNyUqWxTiWIs3sDdWjD9cgOFRp9K6ic,18227
|
|
202
|
-
claude_mpm-3.4.
|
|
203
|
-
claude_mpm-3.4.
|
|
204
|
-
claude_mpm-3.4.
|
|
205
|
-
claude_mpm-3.4.
|
|
206
|
-
claude_mpm-3.4.
|
|
207
|
-
claude_mpm-3.4.
|
|
203
|
+
claude_mpm-3.4.3.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
|
|
204
|
+
claude_mpm-3.4.3.dist-info/METADATA,sha256=1u1MKvFLOd_muZGOI_8X6ZUhzDfuvl5urySla3SMMzw,6523
|
|
205
|
+
claude_mpm-3.4.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
206
|
+
claude_mpm-3.4.3.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
|
|
207
|
+
claude_mpm-3.4.3.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
|
208
|
+
claude_mpm-3.4.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|