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.
@@ -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
- score += 1.0
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 number of keywords for this agent
385
+ # Normalize score by square root to avoid penalizing agents with many keywords
295
386
  if patterns['keywords']:
296
- score = score / len(patterns['keywords'])
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
- if best_score < 0.1:
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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.4.2
3
+ Version: 3.4.3
4
4
  Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
5
5
  Home-page: https://github.com/bobmatnyc/claude-mpm
6
6
  Author: Claude MPM Team
@@ -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=opUFx2xJs1vZN6FyGo8yubqLRwQ6apIm1htZ_6yyoBc,17693
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.2.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
203
- claude_mpm-3.4.2.dist-info/METADATA,sha256=H6UpgRiXB8YzbdQyocYpFep9Gk8lZe4CjgznGJFywBk,6523
204
- claude_mpm-3.4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
205
- claude_mpm-3.4.2.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
206
- claude_mpm-3.4.2.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
207
- claude_mpm-3.4.2.dist-info/RECORD,,
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,,