claude-mpm 3.5.4__py3-none-any.whl → 3.5.6__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.
Files changed (35) hide show
  1. claude_mpm/.claude-mpm/logs/hooks_20250728.log +10 -0
  2. claude_mpm/VERSION +1 -1
  3. claude_mpm/agents/INSTRUCTIONS.md +12 -11
  4. claude_mpm/agents/agent-template.yaml +83 -0
  5. claude_mpm/cli/README.md +108 -0
  6. claude_mpm/cli/commands/agents.py +21 -3
  7. claude_mpm/cli/commands/run.py +4 -11
  8. claude_mpm/cli/utils.py +9 -1
  9. claude_mpm/cli_module/refactoring_guide.md +253 -0
  10. claude_mpm/config/async_logging_config.yaml +145 -0
  11. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
  12. claude_mpm/core/claude_runner.py +94 -33
  13. claude_mpm/core/config_paths.py +0 -1
  14. claude_mpm/core/factories.py +9 -3
  15. claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
  16. claude_mpm/dashboard/README.md +121 -0
  17. claude_mpm/dashboard/static/js/dashboard.js.backup +1973 -0
  18. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
  19. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
  20. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
  21. claude_mpm/hooks/README.md +96 -0
  22. claude_mpm/init.py +83 -13
  23. claude_mpm/schemas/agent_schema.json +435 -0
  24. claude_mpm/services/agents/deployment/agent_deployment.py +165 -9
  25. claude_mpm/services/agents/management/agent_management_service.py +2 -1
  26. claude_mpm/services/framework_claude_md_generator/README.md +92 -0
  27. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +3 -3
  28. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +2 -2
  29. claude_mpm/services/version_control/VERSION +1 -0
  30. {claude_mpm-3.5.4.dist-info → claude_mpm-3.5.6.dist-info}/METADATA +43 -1
  31. {claude_mpm-3.5.4.dist-info → claude_mpm-3.5.6.dist-info}/RECORD +35 -19
  32. {claude_mpm-3.5.4.dist-info → claude_mpm-3.5.6.dist-info}/WHEEL +0 -0
  33. {claude_mpm-3.5.4.dist-info → claude_mpm-3.5.6.dist-info}/entry_points.txt +0 -0
  34. {claude_mpm-3.5.4.dist-info → claude_mpm-3.5.6.dist-info}/licenses/LICENSE +0 -0
  35. {claude_mpm-3.5.4.dist-info → claude_mpm-3.5.6.dist-info}/top_level.txt +0 -0
@@ -70,13 +70,14 @@ class AgentDeploymentService:
70
70
  - YAML generation capabilities
71
71
  """
72
72
 
73
- def __init__(self, templates_dir: Optional[Path] = None, base_agent_path: Optional[Path] = None):
73
+ def __init__(self, templates_dir: Optional[Path] = None, base_agent_path: Optional[Path] = None, working_directory: Optional[Path] = None):
74
74
  """
75
75
  Initialize agent deployment service.
76
76
 
77
77
  Args:
78
78
  templates_dir: Directory containing agent JSON files
79
79
  base_agent_path: Path to base_agent.md file
80
+ working_directory: User's working directory (for project agents)
80
81
 
81
82
  METRICS OPPORTUNITY: Track initialization performance:
82
83
  - Template directory scan time
@@ -100,6 +101,17 @@ class AgentDeploymentService:
100
101
  'deployment_errors': {} # Track error types and frequencies
101
102
  }
102
103
 
104
+ # Determine the actual working directory
105
+ # Priority: working_directory param > CLAUDE_MPM_USER_PWD env var > current directory
106
+ if working_directory:
107
+ self.working_directory = Path(working_directory)
108
+ elif 'CLAUDE_MPM_USER_PWD' in os.environ:
109
+ self.working_directory = Path(os.environ['CLAUDE_MPM_USER_PWD'])
110
+ else:
111
+ self.working_directory = Path.cwd()
112
+
113
+ self.logger.info(f"Working directory for deployment: {self.working_directory}")
114
+
103
115
  # Find templates directory using centralized path management
104
116
  if templates_dir:
105
117
  self.templates_dir = Path(templates_dir)
@@ -137,6 +149,7 @@ class AgentDeploymentService:
137
149
  - Error type frequencies
138
150
 
139
151
  OPERATIONAL FLOW:
152
+ 0. Validates and repairs broken frontmatter in existing agents (Step 0)
140
153
  1. Validates target directory (creates if needed)
141
154
  2. Loads base agent configuration
142
155
  3. Discovers all agent templates
@@ -178,13 +191,15 @@ class AgentDeploymentService:
178
191
  - skipped: List of unchanged agents
179
192
  - errors: List of deployment errors
180
193
  - total: Total number of agents processed
194
+ - repaired: List of agents with repaired frontmatter
181
195
  """
182
196
  # METRICS: Record deployment start time for performance tracking
183
197
  deployment_start_time = time.time()
184
198
 
185
199
  if not target_dir:
186
- # Default to user's home .claude/agents directory
187
- agents_dir = Path(Paths.CLAUDE_AGENTS_DIR.value).expanduser()
200
+ # Default to working directory's .claude/agents directory (not home)
201
+ # This ensures we deploy to the user's project directory, not the framework directory
202
+ agents_dir = self.working_directory / ".claude" / "agents"
188
203
  else:
189
204
  # If target_dir provided, use it directly (caller decides structure)
190
205
  # This allows for both passing a project dir or the full agents path
@@ -211,6 +226,7 @@ class AgentDeploymentService:
211
226
  "updated": [],
212
227
  "migrated": [], # Track agents migrated from old format
213
228
  "converted": [], # Track YAML to MD conversions
229
+ "repaired": [], # Track agents with repaired frontmatter
214
230
  "total": 0,
215
231
  # METRICS: Add detailed timing and performance data to results
216
232
  "metrics": {
@@ -226,6 +242,16 @@ class AgentDeploymentService:
226
242
  try:
227
243
  # Create agents directory if needed
228
244
  agents_dir.mkdir(parents=True, exist_ok=True)
245
+
246
+ # STEP 0: Validate and repair broken frontmatter in existing agents
247
+ # This ensures all existing agents have valid YAML frontmatter before deploying new ones
248
+ repair_results = self._validate_and_repair_existing_agents(agents_dir)
249
+ if repair_results["repaired"]:
250
+ results["repaired"] = repair_results["repaired"]
251
+ self.logger.info(f"Repaired frontmatter in {len(repair_results['repaired'])} existing agents")
252
+ for agent_name in repair_results["repaired"]:
253
+ self.logger.debug(f" - Repaired: {agent_name}")
254
+
229
255
  # Determine source tier for logging
230
256
  source_tier = "SYSTEM"
231
257
  if ".claude-mpm/agents" in str(self.templates_dir) and "/templates" not in str(self.templates_dir):
@@ -269,7 +295,8 @@ class AgentDeploymentService:
269
295
  # Get all template files
270
296
  template_files = list(self.templates_dir.glob("*.json"))
271
297
  # Filter out non-agent files - exclude system files and uppercase special files
272
- excluded_names = {"__init__", "MEMORIES", "TODOWRITE", "INSTRUCTIONS", "README"}
298
+ # CRITICAL: PM (Project Manager) must NEVER be deployed as it's the main Claude instance
299
+ excluded_names = {"__init__", "MEMORIES", "TODOWRITE", "INSTRUCTIONS", "README", "pm", "PM", "project_manager"}
273
300
  template_files = [
274
301
  f for f in template_files
275
302
  if f.stem not in excluded_names
@@ -373,6 +400,7 @@ class AgentDeploymentService:
373
400
  f"updated {len(results['updated'])}, "
374
401
  f"migrated {len(results['migrated'])}, "
375
402
  f"converted {len(results['converted'])} YAML files, "
403
+ f"repaired {len(results['repaired'])} frontmatter, "
376
404
  f"skipped {len(results['skipped'])}, "
377
405
  f"errors: {len(results['errors'])}"
378
406
  )
@@ -864,7 +892,8 @@ temperature: {temperature}"""
864
892
  Dictionary of environment variables set for verification
865
893
  """
866
894
  if not config_dir:
867
- config_dir = Path.cwd() / Paths.CLAUDE_CONFIG_DIR.value
895
+ # Use the working directory determined during initialization
896
+ config_dir = self.working_directory / Paths.CLAUDE_CONFIG_DIR.value
868
897
 
869
898
  env_vars = {}
870
899
 
@@ -930,7 +959,8 @@ temperature: {temperature}"""
930
959
  - warnings: List of potential issues
931
960
  """
932
961
  if not config_dir:
933
- config_dir = Path.cwd() / ".claude"
962
+ # Use the working directory determined during initialization
963
+ config_dir = self.working_directory / ".claude"
934
964
 
935
965
  results = {
936
966
  "config_dir": str(config_dir),
@@ -1094,7 +1124,8 @@ temperature: {temperature}"""
1094
1124
 
1095
1125
  template_files = sorted(self.templates_dir.glob("*.json"))
1096
1126
  # Filter out non-agent files - exclude system files and uppercase special files
1097
- excluded_names = {"__init__", "MEMORIES", "TODOWRITE", "INSTRUCTIONS", "README"}
1127
+ # CRITICAL: PM (Project Manager) must NEVER be deployed as it's the main Claude instance
1128
+ excluded_names = {"__init__", "MEMORIES", "TODOWRITE", "INSTRUCTIONS", "README", "pm", "PM", "project_manager"}
1098
1129
  template_files = [
1099
1130
  f for f in template_files
1100
1131
  if f.stem not in excluded_names
@@ -1283,7 +1314,8 @@ temperature: {temperature}"""
1283
1314
  Cleanup results
1284
1315
  """
1285
1316
  if not config_dir:
1286
- config_dir = Path.cwd() / ".claude"
1317
+ # Use the working directory determined during initialization
1318
+ config_dir = self.working_directory / ".claude"
1287
1319
 
1288
1320
  results = {
1289
1321
  "removed": [],
@@ -1934,4 +1966,128 @@ metadata:
1934
1966
  except Exception as e:
1935
1967
  self.logger.warning(f"Error extracting YAML field '{field_name}': {e}")
1936
1968
 
1937
- return None
1969
+ return None
1970
+
1971
+ def _validate_and_repair_existing_agents(self, agents_dir: Path) -> Dict[str, Any]:
1972
+ """
1973
+ Validate and repair broken frontmatter in existing agent files.
1974
+
1975
+ This method scans existing .claude/agents/*.md files and validates their
1976
+ frontmatter. If the frontmatter is broken or missing, it attempts to repair
1977
+ it or marks the agent for replacement during deployment.
1978
+
1979
+ WHY: Ensures all existing agents have valid YAML frontmatter before deployment,
1980
+ preventing runtime errors in Claude Code when loading agents.
1981
+
1982
+ Args:
1983
+ agents_dir: Directory containing agent .md files
1984
+
1985
+ Returns:
1986
+ Dictionary with validation results:
1987
+ - repaired: List of agent names that were repaired
1988
+ - replaced: List of agent names marked for replacement
1989
+ - errors: List of validation errors
1990
+ """
1991
+ results = {
1992
+ "repaired": [],
1993
+ "replaced": [],
1994
+ "errors": []
1995
+ }
1996
+
1997
+ try:
1998
+ # Import frontmatter validator
1999
+ from claude_mpm.agents.frontmatter_validator import FrontmatterValidator
2000
+ validator = FrontmatterValidator()
2001
+
2002
+ # Find existing agent files
2003
+ agent_files = list(agents_dir.glob("*.md"))
2004
+
2005
+ if not agent_files:
2006
+ self.logger.debug("No existing agent files to validate")
2007
+ return results
2008
+
2009
+ self.logger.debug(f"Validating frontmatter in {len(agent_files)} existing agents")
2010
+
2011
+ for agent_file in agent_files:
2012
+ try:
2013
+ agent_name = agent_file.stem
2014
+
2015
+ # Read agent file content
2016
+ content = agent_file.read_text()
2017
+
2018
+ # Check if this is a system agent (authored by claude-mpm)
2019
+ # Only repair system agents, leave user agents alone
2020
+ if "author: claude-mpm" not in content and "author: 'claude-mpm'" not in content:
2021
+ self.logger.debug(f"Skipping validation for user agent: {agent_name}")
2022
+ continue
2023
+
2024
+ # Extract and validate frontmatter
2025
+ if not content.startswith("---"):
2026
+ # No frontmatter at all - mark for replacement
2027
+ self.logger.warning(f"Agent {agent_name} has no frontmatter, marking for replacement")
2028
+ results["replaced"].append(agent_name)
2029
+ # Delete the file so it will be recreated
2030
+ agent_file.unlink()
2031
+ continue
2032
+
2033
+ # Try to extract frontmatter
2034
+ try:
2035
+ end_marker = content.find("\n---\n", 4)
2036
+ if end_marker == -1:
2037
+ end_marker = content.find("\n---\r\n", 4)
2038
+
2039
+ if end_marker == -1:
2040
+ # Broken frontmatter - mark for replacement
2041
+ self.logger.warning(f"Agent {agent_name} has broken frontmatter, marking for replacement")
2042
+ results["replaced"].append(agent_name)
2043
+ # Delete the file so it will be recreated
2044
+ agent_file.unlink()
2045
+ continue
2046
+
2047
+ # Validate frontmatter with the validator
2048
+ validation_result = validator.validate_file(agent_file)
2049
+
2050
+ if not validation_result.is_valid:
2051
+ # Check if it can be corrected
2052
+ if validation_result.corrected_frontmatter:
2053
+ # Apply corrections
2054
+ correction_result = validator.correct_file(agent_file, dry_run=False)
2055
+ if correction_result.corrections:
2056
+ results["repaired"].append(agent_name)
2057
+ self.logger.info(f"Repaired frontmatter for agent {agent_name}")
2058
+ for correction in correction_result.corrections:
2059
+ self.logger.debug(f" - {correction}")
2060
+ else:
2061
+ # Cannot be corrected - mark for replacement
2062
+ self.logger.warning(f"Agent {agent_name} has invalid frontmatter that cannot be repaired, marking for replacement")
2063
+ results["replaced"].append(agent_name)
2064
+ # Delete the file so it will be recreated
2065
+ agent_file.unlink()
2066
+ elif validation_result.warnings:
2067
+ # Has warnings but is valid
2068
+ for warning in validation_result.warnings:
2069
+ self.logger.debug(f"Agent {agent_name} warning: {warning}")
2070
+
2071
+ except Exception as e:
2072
+ # Any error in parsing - mark for replacement
2073
+ self.logger.warning(f"Failed to parse frontmatter for {agent_name}: {e}, marking for replacement")
2074
+ results["replaced"].append(agent_name)
2075
+ # Delete the file so it will be recreated
2076
+ try:
2077
+ agent_file.unlink()
2078
+ except Exception:
2079
+ pass
2080
+
2081
+ except Exception as e:
2082
+ error_msg = f"Failed to validate agent {agent_file.name}: {e}"
2083
+ self.logger.error(error_msg)
2084
+ results["errors"].append(error_msg)
2085
+
2086
+ except ImportError:
2087
+ self.logger.warning("FrontmatterValidator not available, skipping validation")
2088
+ except Exception as e:
2089
+ error_msg = f"Agent validation failed: {e}"
2090
+ self.logger.error(error_msg)
2091
+ results["errors"].append(error_msg)
2092
+
2093
+ return results
@@ -57,7 +57,8 @@ class AgentManager:
57
57
 
58
58
  if project_dir is None:
59
59
  project_root = PathResolver.get_project_root()
60
- self.project_dir = project_root / ConfigPaths.CONFIG_DIR / "agents" / "project-specific"
60
+ # Use direct agents directory without subdirectory to match deployment expectations
61
+ self.project_dir = project_root / ConfigPaths.CONFIG_DIR / "agents"
61
62
  else:
62
63
  self.project_dir = project_dir
63
64
  self.version_manager = AgentVersionManager()
@@ -0,0 +1,92 @@
1
+ # Framework CLAUDE.md Generator
2
+
3
+ This directory contains the refactored framework CLAUDE.md generator service, originally a single 1,267-line file.
4
+
5
+ ## Structure
6
+
7
+ ### Core Modules
8
+
9
+ - **`__init__.py`** (~250 lines) - Main facade class that coordinates all functionality
10
+ - **`version_manager.py`** (~100 lines) - Handles version parsing, incrementing, and comparison
11
+ - **`content_assembler.py`** (~120 lines) - Assembles sections and applies template variables
12
+ - **`content_validator.py`** (~80 lines) - Validates generated content structure and completeness
13
+ - **`deployment_manager.py`** (~80 lines) - Handles deployment to parent directories
14
+ - **`section_manager.py`** (~60 lines) - Manages section registration, ordering, and updates
15
+
16
+ ### Section Generators
17
+
18
+ The `section_generators/` subdirectory contains individual generators for each section:
19
+
20
+ - **`__init__.py`** - Base classes and registry
21
+ - **`header.py`** - Header with version metadata
22
+ - **`role_designation.py`** - AI Assistant role designation
23
+ - **`agents.py`** (~570 lines) - Comprehensive agents documentation (largest section)
24
+ - **`todo_task_tools.py`** - Todo and Task Tools integration
25
+ - **`claude_pm_init.py`** - Claude-PM initialization procedures
26
+ - **`orchestration_principles.py`** - Core orchestration principles
27
+ - **`subprocess_validation.py`** - Subprocess validation protocol
28
+ - **`delegation_constraints.py`** - Critical delegation constraints
29
+ - **`environment_config.py`** - Environment configuration
30
+ - **`troubleshooting.py`** - Troubleshooting guide
31
+ - **`core_responsibilities.py`** - Core responsibilities list
32
+ - **`footer.py`** - Footer with metadata
33
+
34
+ ## Usage
35
+
36
+ The API remains unchanged from the original implementation:
37
+
38
+ ```python
39
+ from claude_pm.services.framework_claude_md_generator import FrameworkClaudeMdGenerator
40
+
41
+ # Create generator instance
42
+ generator = FrameworkClaudeMdGenerator()
43
+
44
+ # Generate content
45
+ content = generator.generate(
46
+ current_content=existing_content, # Optional: for version auto-increment
47
+ template_variables={'PLATFORM': 'darwin', 'PYTHON_CMD': 'python3'}
48
+ )
49
+
50
+ # Deploy to parent directory
51
+ success, message = generator.deploy_to_parent(Path('/parent/dir'))
52
+
53
+ # Update a section
54
+ generator.update_section('agents', 'Custom agents content')
55
+
56
+ # Add custom section
57
+ generator.add_custom_section('custom', 'Custom content', after='agents')
58
+ ```
59
+
60
+ ## Design Benefits
61
+
62
+ 1. **Modularity**: Each concern is separated into its own module
63
+ 2. **Maintainability**: Smaller, focused modules are easier to understand and modify
64
+ 3. **Testability**: Individual components can be tested in isolation
65
+ 4. **Extensibility**: New section generators can be added easily
66
+ 5. **Performance**: Section generators are loaded on demand
67
+ 6. **Backward Compatibility**: Original API preserved through facade pattern
68
+
69
+ ## Section Generator Pattern
70
+
71
+ To add a new section generator:
72
+
73
+ 1. Create a new file in `section_generators/`
74
+ 2. Inherit from `BaseSectionGenerator`
75
+ 3. Implement the `generate()` method
76
+ 4. Register in `section_generators/__init__.py`
77
+
78
+ Example:
79
+ ```python
80
+ from . import BaseSectionGenerator
81
+
82
+ class CustomSectionGenerator(BaseSectionGenerator):
83
+ def generate(self, data: Dict[str, Any]) -> str:
84
+ return "## Custom Section\n\nContent here..."
85
+ ```
86
+
87
+ ## Refactoring Summary
88
+
89
+ - **Original**: 1,267 lines in a single file
90
+ - **Refactored**: ~250 lines in main module + well-organized submodules
91
+ - **Total line reduction**: Main module reduced by 80%
92
+ - **Improved organization**: 13 focused modules instead of 1 large file
@@ -75,8 +75,8 @@ class AgentsGenerator(BaseSectionGenerator):
75
75
  **ALL AGENT OPERATIONS FOLLOW HIERARCHICAL PRECEDENCE**
76
76
 
77
77
  #### Agent Hierarchy (Highest to Lowest Priority)
78
- 1. **Project Agents**: `$PROJECT/.claude-mpm/agents/project-specific/`
79
- - Project-specific implementations and overrides
78
+ 1. **Project Agents**: `$PROJECT/.claude-mpm/agents/`
79
+ - Project implementations and overrides
80
80
  - Highest precedence for project context
81
81
  - Custom agents tailored to project requirements
82
82
 
@@ -376,7 +376,7 @@ for agent_id, metadata in agents.items():
376
376
  #### Directory Precedence Rules and Agent Discovery
377
377
 
378
378
  **Enhanced Agent Discovery Pattern (Highest to Lowest Priority):**
379
- 1. **Project Agents**: `$PROJECT/.claude-mpm/agents/project-specific/`
379
+ 1. **Project Agents**: `$PROJECT/.claude-mpm/agents/`
380
380
  2. **Current Directory User Agents**: `$PWD/.claude-mpm/agents/user-agents/`
381
381
  3. **Parent Directory User Agents**: Walk up tree checking `../user-agents/`, `../../user-agents/`, etc.
382
382
  4. **User Home Agents**: `~/.claude-mpm/agents/user-defined/`
@@ -79,9 +79,9 @@ claude-pm init --verify
79
79
  - Working directory context
80
80
 
81
81
  3. **Project Directory** (`$PROJECT_ROOT/.claude-mpm/`)
82
- - Project-specific agents in `agents/project-specific/`
82
+ - Project agents in `agents/`
83
83
  - User agents in `agents/user-agents/` with directory precedence
84
- - Project-specific configuration
84
+ - Project configuration
85
85
 
86
86
  ### Health Validation and Deployment Procedures
87
87
 
@@ -0,0 +1 @@
1
+ 0.9.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.5.4
3
+ Version: 3.5.6
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
@@ -45,6 +45,11 @@ Requires-Dist: black; extra == "dev"
45
45
  Requires-Dist: flake8; extra == "dev"
46
46
  Requires-Dist: mypy; extra == "dev"
47
47
  Provides-Extra: monitor
48
+ Provides-Extra: agents
49
+ Requires-Dist: packaging>=21.0; extra == "agents"
50
+ Requires-Dist: toml>=0.10.2; extra == "agents"
51
+ Requires-Dist: tree-sitter>=0.21.0; extra == "agents"
52
+ Requires-Dist: tree-sitter-language-pack>=0.8.0; extra == "agents"
48
53
  Dynamic: author-email
49
54
  Dynamic: home-page
50
55
  Dynamic: license-file
@@ -74,6 +79,12 @@ pip install claude-mpm
74
79
 
75
80
  # Install with development dependencies
76
81
  pip install "claude-mpm[dev]"
82
+
83
+ # Install with agent dependencies (recommended for full functionality)
84
+ pip install "claude-mpm[agents]"
85
+
86
+ # Install with all optional dependencies
87
+ pip install "claude-mpm[agents,dev]"
77
88
  ```
78
89
 
79
90
  ## Basic Usage
@@ -107,6 +118,37 @@ claude-mpm agents fix --all --dry-run
107
118
 
108
119
  For detailed usage, see [QUICKSTART.md](QUICKSTART.md)
109
120
 
121
+ ### Agent Dependencies
122
+
123
+ Claude MPM automatically manages Python dependencies required by agents. Agents can declare their dependencies in their configuration files, and the system aggregates them for easy installation.
124
+
125
+ ```bash
126
+ # Install all agent dependencies
127
+ pip install "claude-mpm[agents]"
128
+
129
+ # View current agent dependencies
130
+ python scripts/aggregate_agent_dependencies.py --dry-run
131
+
132
+ # Update pyproject.toml with latest agent dependencies
133
+ python scripts/aggregate_agent_dependencies.py
134
+ ```
135
+
136
+ **Agent developers** can declare dependencies in their agent configurations:
137
+
138
+ ```json
139
+ {
140
+ "agent_id": "my_agent",
141
+ "dependencies": {
142
+ "python": ["pandas>=2.0.0", "numpy>=1.24.0"],
143
+ "system": ["ripgrep", "git"]
144
+ }
145
+ }
146
+ ```
147
+
148
+ Dependencies are automatically aggregated from all agent sources (PROJECT > USER > SYSTEM) during the build process, with intelligent version conflict resolution taking the highest compatible version.
149
+
150
+ For comprehensive documentation, see [docs/AGENT_DEPENDENCIES.md](docs/AGENT_DEPENDENCIES.md).
151
+
110
152
  ## Key Capabilities
111
153
 
112
154
  ### Multi-Agent Orchestration
@@ -1,13 +1,15 @@
1
- claude_mpm/VERSION,sha256=ODaoFqJsPS4t5O67abi4Nf3-pVUk3xzTHEdohX9_YN0,6
1
+ claude_mpm/VERSION,sha256=HpVENFe46keiMkGxLn5qWThpphm3cOa0-_-DaFHyo88,6
2
2
  claude_mpm/__init__.py,sha256=ix_J0PHZBz37nVBDEYJmLpwnURlWuBKKQ8rK_00TFpk,964
3
3
  claude_mpm/__main__.py,sha256=8IcM9tEbTqSN_er04eKTPX3AGo6qzRiTnPI7KfIf7rw,641
4
4
  claude_mpm/constants.py,sha256=VZl6jPim-EXryEXCEtXbnG-E7Aka0uGz-Hm_EmbNt5Y,4546
5
5
  claude_mpm/deployment_paths.py,sha256=JO7-fhhp_AkVB7ZssggHDBbee-r2sokpkqjoqnQLTmM,9073
6
- claude_mpm/init.py,sha256=41cjA4FQCzryy7f159opOipd-abIj3RtT3z5WzphETU,9607
6
+ claude_mpm/init.py,sha256=l-PgvEnaUvanH5mGWzncd6lCH2O0u8qDa29pMyWg_8Y,13265
7
7
  claude_mpm/ticket_wrapper.py,sha256=bWjLReYyuHSBguuiRm1d52rHYNHqrPJAOLUbMt4CnuM,836
8
+ claude_mpm/.claude-mpm/logs/hooks_20250728.log,sha256=5CAZYZB8sl1mE50SphO3RbdW6E_VVT6YUBCwzN-Y-RI,1244
8
9
  claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=TYgSd9jNBMWp4mAOBUl9dconX4RcGbvmMEScRy5uyko,3343
9
- claude_mpm/agents/INSTRUCTIONS.md,sha256=jCLo-4DPIf2Fh9F6UVEqvP3g1eM2RWxR2hKFpCbRVPI,10847
10
+ claude_mpm/agents/INSTRUCTIONS.md,sha256=CF5BI1wldUAVvdfE4w7s9K0NuU7ckQpiHDEFdCgzeMg,11043
10
11
  claude_mpm/agents/__init__.py,sha256=r-p7ervzjLPD7_8dm2tXX_fwvdTZy6KwKA03ofxN3sA,3275
12
+ claude_mpm/agents/agent-template.yaml,sha256=koKJn8MCAJx0QNQMHouvIZrwvw5qjPV0U-aV-YVyk6s,2036
11
13
  claude_mpm/agents/agent_loader.py,sha256=gScerY4D_j1Q5zfwAthi5SLU2mmcfz-IxUSF9L6r68I,58059
12
14
  claude_mpm/agents/agent_loader_integration.py,sha256=h07Kmk4D75jmHxz5BucP6oQ5VhqVgQ35Sn5w3hcZNYI,7474
13
15
  claude_mpm/agents/agents_metadata.py,sha256=Xju9Yim6XSv2u1J_Swre5VJySbdxxC-9TzpOfXG8ibg,5170
@@ -38,23 +40,26 @@ claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json,sha256=_FHWnUeh
38
40
  claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=o4n_sqSbjnsFRELB2q501vgwm-o2tQNLJLYvnVP9LWU,5629
39
41
  claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5YuD-27CxKSOsRLv0bDY_tCZyds0yGbeizLb8paeFY,2322
40
42
  claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
43
+ claude_mpm/cli/README.md,sha256=BJhHwcwwrxqM0ZCoIJBPvumb32IL1gd-5RcVe2kYQGY,3370
41
44
  claude_mpm/cli/__init__.py,sha256=4YB2djriA_a4zVQZDOWBsVTn28jEaF9oFYCZ-fHDwYM,6838
42
45
  claude_mpm/cli/__main__.py,sha256=vShalycGU13i1-OOixEb_bjl8da4_FolrKdvoiZB-64,769
43
46
  claude_mpm/cli/parser.py,sha256=6jJU_LKKP3xkMEdAlXZ6tIxp_C5SDpK8--4a7Yrnfh8,18975
44
- claude_mpm/cli/utils.py,sha256=dKE3wvK9nFyYpRdEqS6rUC6ln5VbmhSihoaJTTiSZJI,6005
47
+ claude_mpm/cli/utils.py,sha256=qNIbQcA6iE46lsve-GyoIw6eyd9ksHZz3tQA4bSmtt8,6325
45
48
  claude_mpm/cli/commands/__init__.py,sha256=8VGmIJlQuQGWXq49ES35SGjxRkqPpmzP-KvqOLA8IlM,512
46
- claude_mpm/cli/commands/agents.py,sha256=JGfEqXW_c-ZxpSS7Hw0bBs2WfSNo_yH3fOflzOfW85s,20968
49
+ claude_mpm/cli/commands/agents.py,sha256=fB9BuvlQ2MevXUvCLZgDlSK40hhJc9zpF3hYY7O21ec,21659
47
50
  claude_mpm/cli/commands/info.py,sha256=ETL6jC08OTQVTPjs219Y0m3FzfKOUlI0-yI81AI8FXY,2990
48
51
  claude_mpm/cli/commands/memory.py,sha256=ymw4EatEKHfvvMHSy6dr4-x9OB7e1nZdJS0EP0f5paI,37350
49
52
  claude_mpm/cli/commands/monitor.py,sha256=80_tmSdfn_2cYpzxxPu9GnvFW0eixlSJ4wCqbn8VSCM,12407
50
- claude_mpm/cli/commands/run.py,sha256=33wq8Nsiknd7gBWW3fwfb_dLEHF_BtqaKo-mcn4AB20,30812
53
+ claude_mpm/cli/commands/run.py,sha256=2XB3gBYth5G-rPaEoW_LBlurrrJ_kDPKnfPjFTObZcc,30388
51
54
  claude_mpm/cli/commands/tickets.py,sha256=SXyGtHSyGJwTeJwDAHf7kRbdiG1DlZkXkod5UoNy7Ik,2150
52
55
  claude_mpm/cli_module/__init__.py,sha256=CkMp4gzWKoZZF_qKyBDi2sQaZw_GLWZYLtKouv-4f8s,390
53
56
  claude_mpm/cli_module/args.py,sha256=nilYpziBsoEySO4W1hQ2MRJyn9TFx3c3TrucyMMhRtk,7970
54
57
  claude_mpm/cli_module/commands.py,sha256=CBNfO-bXrZ0spjeW_7-swprEq5V4PQSc0qhl9SLP5UU,7168
55
58
  claude_mpm/cli_module/migration_example.py,sha256=C-_GbsW8dGzutnNeRLLld74ibDLyAOQx0stdpYZS0hs,6137
59
+ claude_mpm/cli_module/refactoring_guide.md,sha256=fl1PGwLZAj4OYWmU0syg1jDd81PqK7rC7rhwgFId5BE,7048
56
60
  claude_mpm/config/__init__.py,sha256=xte4oPG1ubIKhzne1do7slU6FbGebXin_QmyzGRn8c8,1114
57
61
  claude_mpm/config/agent_config.py,sha256=QS-25LSiNz4uOocjIM_FX_SGoRQHJOfkBZCKlz09K5k,13830
62
+ claude_mpm/config/async_logging_config.yaml,sha256=SBnTiykFxPpHU5yV-oFeRPAzTP7ewRbdl7dt3PPADds,3805
58
63
  claude_mpm/config/paths.py,sha256=bOxSLNPBDQ3GM4NupY4Z0Jrxykgtw40z92Ytc-LMCuo,9670
59
64
  claude_mpm/config/socketio_config.py,sha256=fSzqleM9EzehWg3U_--0y_zVgXZo7Q45JCI_a2xPs1g,9452
60
65
  claude_mpm/core/__init__.py,sha256=yEiE03zgfISu6rSaLIUJ5vruNhkYrDHN69YeWRlrEIY,1079
@@ -62,12 +67,12 @@ claude_mpm/core/agent_name_normalizer.py,sha256=-X68oz3_74t9BRbHA54NEGyjy0xjTsGp
62
67
  claude_mpm/core/agent_registry.py,sha256=YvEu-ZBc7XBi9KC2ZV8sWbVAuk0iwi38tg2cK45ZWb4,22521
63
68
  claude_mpm/core/agent_session_manager.py,sha256=6alXQr4gnMR-unT4J1ryEtTxJqQolA0-NgPQN6X3lqY,11212
64
69
  claude_mpm/core/base_service.py,sha256=qWI_rUybHmmKroptJxcE4rzPBhK8yeMKIt2JqnqJB7E,29125
65
- claude_mpm/core/claude_runner.py,sha256=2A7lUNUE7MGJ98uQPNTi_Tl1-Z6_ad6G_xjMuBXrkgs,70097
70
+ claude_mpm/core/claude_runner.py,sha256=d4r439GgUs4jxSq33IL7VIlwk__Cw9jWbYO42JjYbiI,73351
66
71
  claude_mpm/core/config.py,sha256=Yr4bVHq-Ld4_E1QprdEwCvoRXS37xu2UtxzoNePJdJw,20635
67
72
  claude_mpm/core/config_aliases.py,sha256=uilRxeIVMY4ZM_I7lnUeR0n4_nmiOpW2jY2_aW4udNA,10105
68
- claude_mpm/core/config_paths.py,sha256=nV8054MXZtO0WkXwpFMIGiT0uHPRU54I0ciEhsY_hEs,5019
73
+ claude_mpm/core/config_paths.py,sha256=SwoB02p7GVw5pnEasC5wPyjfFZKxCsQvQmepRCpm-Es,4971
69
74
  claude_mpm/core/container.py,sha256=P4c4nSo_USSfHTxvpR1sQkVGNsgqozZBN27l3IXqiDc,12216
70
- claude_mpm/core/factories.py,sha256=Vas0bSrnhHBX7FmogFl3jxgK695wyrJy99qVMmVeGFk,6034
75
+ claude_mpm/core/factories.py,sha256=hdC1BwS8gIYXt7NxoJxas3URIPxkWU8FcRbuy31ctB0,6310
71
76
  claude_mpm/core/framework_loader.py,sha256=SdONNh8a7vSicr4vVuRzd7OqgDMIyg9k_xxbr8bLRi8,19547
72
77
  claude_mpm/core/hook_manager.py,sha256=pVjVTu54FvpzI4F91VWX-hNStTeQelKCUM3qLjE8MhE,7045
73
78
  claude_mpm/core/injectable_service.py,sha256=7fOny9c6x8IJ9hVZmFql1eNDXXB1jcWbsxfTKbMZk74,7497
@@ -80,12 +85,16 @@ claude_mpm/core/service_registry.py,sha256=1DnOOWLoDjQJB49YRlV_Ehf6YP79ilPMtHNpS
80
85
  claude_mpm/core/session_manager.py,sha256=D6ZA7bHAgfdkv0nLKjza0FKDng5iqi___IESrb3nSuk,8292
81
86
  claude_mpm/core/socketio_pool.py,sha256=B83uDsmqRF5S0QDwwatyKS-m2SdTvotCVfc3_2uQxd8,22438
82
87
  claude_mpm/core/tool_access_control.py,sha256=htZbDhC8s7D7BVqfmk0BwRrYJnlnUAk8_NeJKOaeNlg,6632
88
+ claude_mpm/core/.claude-mpm/logs/hooks_20250730.log,sha256=sIDaaPfbtKTAYy6CoS-Tu12J5vRHBmNvXV88HPlP-hI,4210
89
+ claude_mpm/dashboard/README.md,sha256=BuaFPsg9QOvxd_TAw9a5OdgaBDg8OUJ8eeBOpqe6LK8,4050
83
90
  claude_mpm/dashboard/index.html,sha256=lXd4WCDn46w9a6edUpGQIy5DtCmiTvDerd1vY97Ule8,451
84
91
  claude_mpm/dashboard/open_dashboard.py,sha256=aXUc6LzUMwmTQMkl_h2jjvICimr-ED4FPMHP_9mnrgQ,1108
85
92
  claude_mpm/dashboard/test_dashboard.html,sha256=Aakmm9O-pWld_CCXLuUBOJC81Ix9D1avytTN93u0zfc,15090
93
+ claude_mpm/dashboard/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
86
94
  claude_mpm/dashboard/static/css/dashboard.css,sha256=z2Z9jLWoPsC71gdQQML9D9Dkr54XnpKhcz4jomCKfdY,49692
87
95
  claude_mpm/dashboard/static/js/dashboard-original.js,sha256=MfrEvUbvB-sU67wslVBEYmk2q9d0s2a_u1NWodJNQrc,162374
88
96
  claude_mpm/dashboard/static/js/dashboard.js,sha256=vCRjE6HfxQ4VGqe8sML2_8lX0w6qoaZF0AmWjKVldpM,72056
97
+ claude_mpm/dashboard/static/js/dashboard.js.backup,sha256=UNqDPBwzJ1aZAVCxT-FGBY13nF1Q6W2UUUZggNZnOxY,71607
89
98
  claude_mpm/dashboard/static/js/socket-client.js,sha256=hjh-HGAlTpaX0Cr6A7DG75TZjujPFcRQSdw7FrysCWQ,18912
90
99
  claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=xlH3ka8Ev-WybsMp5wAHTQyJzqpht6n3iksmgGO8nfc,27889
91
100
  claude_mpm/dashboard/static/js/components/event-processor.js,sha256=7CsQw1WtKuhV_uj5AaVNMYj6PAAOcT77dxyucBDqs4w,25428
@@ -101,9 +110,13 @@ claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=x0mKU7gIpIkfA
101
110
  claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=5Ligdos7L_UTWMtCW34Y7BNh7msdd9ArCr-7Yr9-VS8,12979
102
111
  claude_mpm/dashboard/static/js/components/working-directory.js,sha256=YGyTP0vCaRc9qR7g2d1INShG0-0_X-xkqCW2IF82eXc,33213
103
112
  claude_mpm/dashboard/templates/index.html,sha256=ONVRsfpsqmvQDuz9d3QTaF2zN08YoQM9kU-Bxri4660,14997
113
+ claude_mpm/dashboard/templates/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
114
+ claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md,sha256=t8WHtbTdnh9lKJPaHPD-3nynA7kMCogaEGER-orO4bs,1150
115
+ claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md,sha256=tHMYDLOkL06iaiuI0Lt-UK81iJxMaa8APWfgPXc46nw,1091
104
116
  claude_mpm/experimental/cli_enhancements.py,sha256=-N5f2u9TaxUcOJegUd3lt1FRz5ErEyYUvvgrNmMRL7Q,11814
105
117
  claude_mpm/generators/__init__.py,sha256=l53aBn6kBQSDz3b6bZkMCJBcEmYnV9hHEZq8LKzXgH8,152
106
118
  claude_mpm/generators/agent_profile_generator.py,sha256=2HjOscogSyvrtQj8KwdgNPS6Ym_QvgX1BMeauQZewZA,5751
119
+ claude_mpm/hooks/README.md,sha256=wrj5GP0aiPzx0vQrZlE4I1JaQ_JaO_kdQPj7pgfiQKc,3129
107
120
  claude_mpm/hooks/__init__.py,sha256=Y3JJ_mEtvRP07r_gXkju4c0s18bjIXGH1uAbhSw1ES0,166
108
121
  claude_mpm/hooks/base_hook.py,sha256=a4V2EKEG02QQB0h-pnxhZI-fouKBLYbdBLckcaNuf0k,5098
109
122
  claude_mpm/hooks/memory_integration_hook.py,sha256=z0I5R4rsmLx3mzYf7QLeMTYbRShagjS6u3ASyc4XLv0,16311
@@ -114,6 +127,7 @@ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=jbUf-ccs9B1QRSVsMnUJrNL4ogu
114
127
  claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=JBbedWNs1EHaUsAkmqfPv_tWxV_DcRP707hma74oHU0,2370
115
128
  claude_mpm/models/__init__.py,sha256=vy2NLX2KT9QeH76SjCYh9dOYKPLRgxGrnwkQFAg08gc,465
116
129
  claude_mpm/models/agent_definition.py,sha256=y9XQOED_maOyiYKhNB8H8MfJJMBN0vIYPS_wCXnRJmA,6647
130
+ claude_mpm/schemas/agent_schema.json,sha256=T6yRidCHiRbeXYj1MqZJkepiOfUSN9kwNcU28Zqdi_k,13911
117
131
  claude_mpm/scripts/socketio_daemon.py,sha256=93jzq-h5GQRK-xYpLaovaqNAXtwR_ZqYjmEMmFn0xE8,9741
118
132
  claude_mpm/services/__init__.py,sha256=6iAzVquVu_hhNN05fdGzOwhyLfWbYkTv-gaCHS_tmoE,4616
119
133
  claude_mpm/services/async_session_logger.py,sha256=KhV540ZFu__ry9sDuckSA5MkyNfov8dLCTRZkgMQ62Q,21651
@@ -135,7 +149,7 @@ claude_mpm/services/ticket_manager_di.py,sha256=pIsIGncbboKzBYSRQTO7ZX5MuQzV6iFf
135
149
  claude_mpm/services/ticketing_service_original.py,sha256=_GbPCPuIAlfxQGfmHN-LQ6sjuDk00eNdY7rlS4qhjI4,16745
136
150
  claude_mpm/services/agents/__init__.py,sha256=F5yJSTruNz0qiI2--oJIBO5-LoGQ6wXHvbt1sk-eVLU,2224
137
151
  claude_mpm/services/agents/deployment/__init__.py,sha256=PhQQ108KP9RoxLLh_8aoPIjmwJau3az_10cEoPDm7DQ,538
138
- claude_mpm/services/agents/deployment/agent_deployment.py,sha256=e1KhTKJeke8f0NuSBW6v-piMRKpVlc9xhh1Y66Gd2cM,85801
152
+ claude_mpm/services/agents/deployment/agent_deployment.py,sha256=ITrSLALasj_vVxSoHkoqGXxrlnYEl7ITQ1rNpf1V05k,94343
139
153
  claude_mpm/services/agents/deployment/agent_lifecycle_manager.py,sha256=b7guIDwEiJNRWtaRx1PwusqZX5QCnXqq-tl5AQOFp7Y,50136
140
154
  claude_mpm/services/agents/deployment/agent_versioning.py,sha256=y4SiKGKdTn-9_Ht6nGlmKGJW6MLgEHZUy5SR1OPTZZM,1108
141
155
  claude_mpm/services/agents/loading/__init__.py,sha256=NN4JGAH7nsoY7qTW-jIBKOJPpLJVcD4P6S2Vmdd7QH8,305
@@ -144,7 +158,7 @@ claude_mpm/services/agents/loading/base_agent_manager.py,sha256=y_MKtqReD5h70BpC
144
158
  claude_mpm/services/agents/loading/framework_agent_loader.py,sha256=fyP54zrNxv-Xe8hRMInTnltaMtFgmRuCfMbaArPlkmc,17560
145
159
  claude_mpm/services/agents/management/__init__.py,sha256=ZZm0jEdso59S72fw4O8jnU1iGWfDN68nWdXe9APvi8U,233
146
160
  claude_mpm/services/agents/management/agent_capabilities_generator.py,sha256=hWG0zV2InmzrDMxSbQzjVBBTzEaxg0bFxl8tmTMJ8qA,6565
147
- claude_mpm/services/agents/management/agent_management_service.py,sha256=Ka0K71bW9UquhnL-orkUdVGspRqS2W_gE-NnKya3wMs,22978
161
+ claude_mpm/services/agents/management/agent_management_service.py,sha256=OKU6dxxR1x53I9eimlJPMUDV9Hbc-Urw5gerCvM1nEk,23053
148
162
  claude_mpm/services/agents/memory/__init__.py,sha256=IzY-iU93_v9HBCHZ0UaSYkdLWXobFRLcjdJXd6iAuFY,455
149
163
  claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=8JIcNEdmofEiWyVqX3SG5s--hQVAcVRj142YB9asvjU,58846
150
164
  claude_mpm/services/agents/memory/agent_persistence_service.py,sha256=B_Vz43zCKWq47zWkoibcia-Qwn2y3gARu7MV5Cpiptc,2893
@@ -152,6 +166,7 @@ claude_mpm/services/agents/registry/__init__.py,sha256=_NsxGhhykoj0NecfA4o8Xscrv
152
166
  claude_mpm/services/agents/registry/agent_registry.py,sha256=jb-hIDGAoLWqBauS49N5Iin-nSozspGgUtb-gAROCfc,31570
153
167
  claude_mpm/services/agents/registry/deployed_agent_discovery.py,sha256=EFsrutLB3Kxa5TXoQC2aVNx5cMIAaDcTqCBnF1FfrPc,9762
154
168
  claude_mpm/services/agents/registry/modification_tracker.py,sha256=efkl652bAHhxUc6keoE2dOxlaQXtDnC3lkmR_jat4u4,34565
169
+ claude_mpm/services/framework_claude_md_generator/README.md,sha256=_-ty72t2afPagDVVUEizPkhs4BYkCeqCnZDNPgZAYtY,3511
155
170
  claude_mpm/services/framework_claude_md_generator/__init__.py,sha256=OtnwxLiJektfFtsKdkHM1X27rKkFiNd_rcf4843ziKw,7334
156
171
  claude_mpm/services/framework_claude_md_generator/content_assembler.py,sha256=DNMVz6Jvy7bxxa8WNL2h-JwrK89bJpuxXEI5xD1i8mY,6570
157
172
  claude_mpm/services/framework_claude_md_generator/content_validator.py,sha256=89QSGil9_NL15ci3HsVVQmfg7MZvsJS3i_ELP5yD-gA,4583
@@ -159,8 +174,8 @@ claude_mpm/services/framework_claude_md_generator/deployment_manager.py,sha256=G
159
174
  claude_mpm/services/framework_claude_md_generator/section_manager.py,sha256=KbipmnUg7FD3YnVdUj4Ttrm3HMmWrDnjWC6fKX5D3tI,3222
160
175
  claude_mpm/services/framework_claude_md_generator/version_manager.py,sha256=VpJMieGEVkkKC6vyhHxKcUjPNzxBuPwD61lTyPJwxXM,4284
161
176
  claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py,sha256=HIIW34LgzTJk_ne4qoNxXgYZp3EhEisJR0SjfNjPG7o,3486
162
- claude_mpm/services/framework_claude_md_generator/section_generators/agents.py,sha256=PjLmAlk15cVXFzqvy8m-qdP6buIchdh3wRMBnDmZ7Cg,23244
163
- claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py,sha256=t3AAKSsVhL_jHhNWzV7UUngt_lU-azhu6nYzhgnQ65g,2924
177
+ claude_mpm/services/framework_claude_md_generator/section_generators/agents.py,sha256=b4pTJQKGt4BmqZmFGa8cKlgy03JJekmIZi_rIsCStaE,23201
178
+ claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py,sha256=oZ-QNeF6iAC13T1yCGhD9ROogfoJKPYq2Rn4ld6cgPY,2889
164
179
  claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py,sha256=B52TWCQ2Uic9cOke8FftpzfJQ8MbbOLyn92QN8g83qA,1823
165
180
  claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py,sha256=WGw1cFvopLHK4Xz8l1qqlNDmUMKNdMr1_88DNJ0oKSk,995
166
181
  claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py,sha256=MUoO0jKnxWA1WC3JP-jJCVz2cgCM-EwUPnMN7cmNdBQ,629
@@ -178,6 +193,7 @@ claude_mpm/services/memory/router.py,sha256=ECQQ1v0BsMFQ4RXqpKfc9fwAXpzx5Kk0QlmJ
178
193
  claude_mpm/services/memory/cache/__init__.py,sha256=FBff6fkrJWuWbQjQ4MoOxQa6ybRVBeH29hQC2XP0DEU,350
179
194
  claude_mpm/services/memory/cache/shared_prompt_cache.py,sha256=bw1FDXM6iMuVfFxx_RNlIFZfiGC10p18Npwk-IGFCJ0,29899
180
195
  claude_mpm/services/memory/cache/simple_cache.py,sha256=eVJq7mD4fn-EfRaLgKJxP65rqQrup-AqB-Cf7EFYy58,10480
196
+ claude_mpm/services/version_control/VERSION,sha256=MMmeixA-rL5vbW4bVLBsptXzFktPUAlDNKUXrpXKj7o,5
181
197
  claude_mpm/services/version_control/__init__.py,sha256=5BFbqFUMtpCyDbMcekRjCQ4jgBAJI50PhfuZ8S5NTjk,1513
182
198
  claude_mpm/services/version_control/branch_strategy.py,sha256=xOLeNcu0AtpgIRmNkew-fNvXVcGHRuAe6MqOyyS36HQ,23068
183
199
  claude_mpm/services/version_control/conflict_resolution.py,sha256=yWa9fzmkds1U0EBw-LyTZvlj56MpEEsRmryLQg4KDdU,26084
@@ -195,9 +211,9 @@ claude_mpm/utils/paths.py,sha256=DlkYrIVvfgyuF9cN01cWuxehK0UUsCfjp6ymrv8XY7A,102
195
211
  claude_mpm/utils/session_logging.py,sha256=9G0AzB7V0WkhLQlN0ocqbyDv0ifooEsJ5UPXIhA-wt0,3022
196
212
  claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
197
213
  claude_mpm/validation/agent_validator.py,sha256=Jy7Oi7GVM7jqFYLVFDQ9pKYXsXH2KEf5uorflIwWGC4,20348
198
- claude_mpm-3.5.4.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
199
- claude_mpm-3.5.4.dist-info/METADATA,sha256=_Usy3KtLBevJwBs3tMAq4RZr3fO5iiXhymMfX6XHd9I,7683
200
- claude_mpm-3.5.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
201
- claude_mpm-3.5.4.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
202
- claude_mpm-3.5.4.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
203
- claude_mpm-3.5.4.dist-info/RECORD,,
214
+ claude_mpm-3.5.6.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
215
+ claude_mpm-3.5.6.dist-info/METADATA,sha256=DOr2AUi_jx6A_XFlAOMThF_b7XEKvpX3pEVRib3q8UI,9128
216
+ claude_mpm-3.5.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
217
+ claude_mpm-3.5.6.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
218
+ claude_mpm-3.5.6.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
219
+ claude_mpm-3.5.6.dist-info/RECORD,,