claude-mpm 3.1.3__py3-none-any.whl → 3.2.1__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 (79) hide show
  1. claude_mpm/__init__.py +3 -3
  2. claude_mpm/__main__.py +0 -17
  3. claude_mpm/agents/INSTRUCTIONS.md +81 -18
  4. claude_mpm/agents/backups/INSTRUCTIONS.md +238 -0
  5. claude_mpm/agents/base_agent.json +1 -1
  6. claude_mpm/agents/templates/pm.json +25 -0
  7. claude_mpm/agents/templates/research.json +2 -1
  8. claude_mpm/cli/__init__.py +19 -23
  9. claude_mpm/cli/commands/__init__.py +3 -1
  10. claude_mpm/cli/commands/agents.py +7 -18
  11. claude_mpm/cli/commands/info.py +5 -10
  12. claude_mpm/cli/commands/memory.py +232 -0
  13. claude_mpm/cli/commands/run.py +501 -28
  14. claude_mpm/cli/commands/tickets.py +10 -17
  15. claude_mpm/cli/commands/ui.py +15 -37
  16. claude_mpm/cli/parser.py +91 -1
  17. claude_mpm/cli/utils.py +9 -28
  18. claude_mpm/config/socketio_config.py +256 -0
  19. claude_mpm/constants.py +9 -0
  20. claude_mpm/core/__init__.py +2 -2
  21. claude_mpm/core/agent_registry.py +4 -4
  22. claude_mpm/core/claude_runner.py +919 -0
  23. claude_mpm/core/config.py +21 -1
  24. claude_mpm/core/factories.py +1 -1
  25. claude_mpm/core/hook_manager.py +196 -0
  26. claude_mpm/core/pm_hook_interceptor.py +205 -0
  27. claude_mpm/core/service_registry.py +1 -1
  28. claude_mpm/core/simple_runner.py +323 -33
  29. claude_mpm/core/socketio_pool.py +582 -0
  30. claude_mpm/core/websocket_handler.py +233 -0
  31. claude_mpm/deployment_paths.py +261 -0
  32. claude_mpm/hooks/builtin/memory_hooks_example.py +67 -0
  33. claude_mpm/hooks/claude_hooks/hook_handler.py +667 -679
  34. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +9 -4
  35. claude_mpm/hooks/memory_integration_hook.py +312 -0
  36. claude_mpm/models/__init__.py +9 -91
  37. claude_mpm/orchestration/__init__.py +1 -1
  38. claude_mpm/scripts/claude-mpm-socketio +32 -0
  39. claude_mpm/scripts/claude_mpm_monitor.html +567 -0
  40. claude_mpm/scripts/install_socketio_server.py +407 -0
  41. claude_mpm/scripts/launch_monitor.py +132 -0
  42. claude_mpm/scripts/manage_version.py +479 -0
  43. claude_mpm/scripts/socketio_daemon.py +181 -0
  44. claude_mpm/scripts/socketio_server_manager.py +428 -0
  45. claude_mpm/services/__init__.py +5 -0
  46. claude_mpm/services/agent_lifecycle_manager.py +76 -25
  47. claude_mpm/services/agent_memory_manager.py +684 -0
  48. claude_mpm/services/agent_modification_tracker.py +98 -17
  49. claude_mpm/services/agent_persistence_service.py +33 -13
  50. claude_mpm/services/agent_registry.py +82 -43
  51. claude_mpm/services/hook_service.py +362 -0
  52. claude_mpm/services/socketio_client_manager.py +474 -0
  53. claude_mpm/services/socketio_server.py +698 -0
  54. claude_mpm/services/standalone_socketio_server.py +631 -0
  55. claude_mpm/services/ticket_manager.py +4 -5
  56. claude_mpm/services/{ticket_manager_dependency_injection.py → ticket_manager_di.py} +12 -39
  57. claude_mpm/services/{legacy_ticketing_service.py → ticketing_service_original.py} +9 -16
  58. claude_mpm/services/version_control/semantic_versioning.py +9 -10
  59. claude_mpm/services/websocket_server.py +376 -0
  60. claude_mpm/utils/dependency_manager.py +211 -0
  61. claude_mpm/utils/import_migration_example.py +80 -0
  62. claude_mpm/utils/path_operations.py +0 -20
  63. claude_mpm/web/open_dashboard.py +34 -0
  64. {claude_mpm-3.1.3.dist-info → claude_mpm-3.2.1.dist-info}/METADATA +20 -9
  65. {claude_mpm-3.1.3.dist-info → claude_mpm-3.2.1.dist-info}/RECORD +70 -50
  66. claude_mpm-3.2.1.dist-info/entry_points.txt +7 -0
  67. claude_mpm/cli_old.py +0 -728
  68. claude_mpm/models/common.py +0 -41
  69. claude_mpm/models/lifecycle.py +0 -97
  70. claude_mpm/models/modification.py +0 -126
  71. claude_mpm/models/persistence.py +0 -57
  72. claude_mpm/models/registry.py +0 -91
  73. claude_mpm/security/__init__.py +0 -8
  74. claude_mpm/security/bash_validator.py +0 -393
  75. claude_mpm-3.1.3.dist-info/entry_points.txt +0 -4
  76. /claude_mpm/{cli_enhancements.py → experimental/cli_enhancements.py} +0 -0
  77. {claude_mpm-3.1.3.dist-info → claude_mpm-3.2.1.dist-info}/WHEEL +0 -0
  78. {claude_mpm-3.1.3.dist-info → claude_mpm-3.2.1.dist-info}/licenses/LICENSE +0 -0
  79. {claude_mpm-3.1.3.dist-info → claude_mpm-3.2.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,211 @@
1
+ """
2
+ Dependency management utilities for claude-mpm.
3
+
4
+ WHY: This module handles automatic installation of optional dependencies
5
+ like Socket.IO monitoring tools. It ensures users can run --monitor without
6
+ manual dependency setup.
7
+
8
+ DESIGN DECISION: We use subprocess to install packages in the same environment
9
+ that's running claude-mpm, respecting virtual environments and user setups.
10
+ """
11
+
12
+ import subprocess
13
+ import sys
14
+ import importlib
15
+ from typing import List, Tuple, Optional
16
+ from pathlib import Path
17
+
18
+ from ..core.logger import get_logger
19
+
20
+
21
+ def check_dependency(package_name: str, import_name: Optional[str] = None) -> bool:
22
+ """
23
+ Check if a Python package is installed and importable.
24
+
25
+ WHY: We need to verify if optional dependencies are available before
26
+ attempting to use them. This prevents ImportError crashes.
27
+
28
+ DESIGN DECISION: We use importlib.util.find_spec() which is more reliable
29
+ than try/except import because it doesn't execute module code.
30
+
31
+ Args:
32
+ package_name: Name of the package (e.g., 'python-socketio')
33
+ import_name: Name to import (e.g., 'socketio'). Defaults to package_name.
34
+
35
+ Returns:
36
+ bool: True if package is available, False otherwise
37
+ """
38
+ if import_name is None:
39
+ import_name = package_name.replace('-', '_')
40
+
41
+ try:
42
+ import importlib.util
43
+ spec = importlib.util.find_spec(import_name)
44
+ return spec is not None
45
+ except (ImportError, ModuleNotFoundError, ValueError):
46
+ return False
47
+
48
+
49
+ def install_packages(packages: List[str], logger=None) -> Tuple[bool, str]:
50
+ """
51
+ Install Python packages using pip in the current environment.
52
+
53
+ WHY: Users should not need to manually install optional dependencies.
54
+ This function handles automatic installation while respecting the current
55
+ Python environment (including virtual environments).
56
+
57
+ DESIGN DECISION: We use subprocess to call pip instead of importlib
58
+ because pip installation needs to be done in the same environment
59
+ that's running the application.
60
+
61
+ Args:
62
+ packages: List of package names to install
63
+ logger: Optional logger for output
64
+
65
+ Returns:
66
+ Tuple[bool, str]: (success, error_message_if_failed)
67
+ """
68
+ if logger is None:
69
+ logger = get_logger("dependency_manager")
70
+
71
+ try:
72
+ # Use the same Python executable that's running this script
73
+ cmd = [sys.executable, "-m", "pip", "install"] + packages
74
+
75
+ logger.info(f"Installing packages: {packages}")
76
+ logger.debug(f"Running command: {' '.join(cmd)}")
77
+
78
+ # Run pip install with proper error handling
79
+ result = subprocess.run(
80
+ cmd,
81
+ capture_output=True,
82
+ text=True,
83
+ timeout=300 # 5 minute timeout for installation
84
+ )
85
+
86
+ if result.returncode == 0:
87
+ logger.info(f"Successfully installed packages: {packages}")
88
+ return True, ""
89
+ else:
90
+ error_msg = f"pip install failed with return code {result.returncode}"
91
+ if result.stderr:
92
+ error_msg += f": {result.stderr.strip()}"
93
+ logger.error(error_msg)
94
+ return False, error_msg
95
+
96
+ except subprocess.TimeoutExpired:
97
+ error_msg = "Package installation timed out after 5 minutes"
98
+ logger.error(error_msg)
99
+ return False, error_msg
100
+ except Exception as e:
101
+ error_msg = f"Failed to install packages: {e}"
102
+ logger.error(error_msg)
103
+ return False, error_msg
104
+
105
+
106
+ def ensure_socketio_dependencies(logger=None) -> Tuple[bool, str]:
107
+ """
108
+ Ensure Socket.IO dependencies are installed for monitoring features.
109
+
110
+ WHY: The --monitor flag requires python-socketio and aiohttp, but we want
111
+ the base package to work without these heavy dependencies. This function
112
+ installs them on-demand.
113
+
114
+ DESIGN DECISION: We check each dependency individually and only install
115
+ what's missing, reducing installation time and avoiding unnecessary work.
116
+
117
+ Args:
118
+ logger: Optional logger for output
119
+
120
+ Returns:
121
+ Tuple[bool, str]: (success, error_message_if_failed)
122
+ """
123
+ if logger is None:
124
+ logger = get_logger("dependency_manager")
125
+
126
+ # Define required packages for Socket.IO monitoring
127
+ required_packages = [
128
+ ("python-socketio", "socketio"),
129
+ ("aiohttp", "aiohttp"),
130
+ ("python-engineio", "engineio")
131
+ ]
132
+
133
+ missing_packages = []
134
+
135
+ # Check which packages are missing
136
+ for package_name, import_name in required_packages:
137
+ if not check_dependency(package_name, import_name):
138
+ missing_packages.append(package_name)
139
+ logger.debug(f"Missing dependency: {package_name}")
140
+
141
+ if not missing_packages:
142
+ logger.debug("All Socket.IO dependencies are already installed")
143
+ return True, ""
144
+
145
+ # Install missing packages
146
+ logger.info(f"Installing missing Socket.IO dependencies: {missing_packages}")
147
+ success, error_msg = install_packages(missing_packages, logger)
148
+
149
+ if success:
150
+ # Verify installation worked
151
+ for package_name, import_name in required_packages:
152
+ if not check_dependency(package_name, import_name):
153
+ error_msg = f"Package {package_name} was installed but is not importable"
154
+ logger.error(error_msg)
155
+ return False, error_msg
156
+
157
+ logger.info("Socket.IO dependencies installed and verified successfully")
158
+ return True, ""
159
+ else:
160
+ return False, error_msg
161
+
162
+
163
+ def get_pip_freeze_output() -> List[str]:
164
+ """
165
+ Get the output of 'pip freeze' for debugging dependency issues.
166
+
167
+ WHY: When dependency installation fails, we need to help users
168
+ understand what packages are installed and what might be conflicting.
169
+
170
+ Returns:
171
+ List[str]: List of installed packages from pip freeze
172
+ """
173
+ try:
174
+ result = subprocess.run(
175
+ [sys.executable, "-m", "pip", "freeze"],
176
+ capture_output=True,
177
+ text=True,
178
+ timeout=30
179
+ )
180
+
181
+ if result.returncode == 0:
182
+ return result.stdout.strip().split('\n')
183
+ else:
184
+ return [f"pip freeze failed: {result.stderr}"]
185
+
186
+ except Exception as e:
187
+ return [f"Failed to get pip freeze output: {e}"]
188
+
189
+
190
+ def check_virtual_environment() -> Tuple[bool, str]:
191
+ """
192
+ Check if we're running in a virtual environment.
193
+
194
+ WHY: Installation behavior might differ between virtual environments
195
+ and system Python. This helps with debugging and user guidance.
196
+
197
+ Returns:
198
+ Tuple[bool, str]: (is_virtual_env, environment_info)
199
+ """
200
+ # Check for virtual environment indicators
201
+ in_venv = (
202
+ hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix
203
+ or hasattr(sys, 'real_prefix')
204
+ or (hasattr(sys, 'prefix') and 'conda' in sys.prefix.lower())
205
+ )
206
+
207
+ if in_venv:
208
+ venv_path = getattr(sys, 'prefix', 'unknown')
209
+ return True, f"Virtual environment: {venv_path}"
210
+ else:
211
+ return False, f"System Python: {sys.prefix}"
@@ -0,0 +1,80 @@
1
+ """Example of how to migrate duplicate import patterns to use safe_import.
2
+
3
+ This file demonstrates how to replace the common try/except ImportError
4
+ pattern with the new safe_import utility.
5
+ """
6
+
7
+ # BEFORE: The old pattern used throughout the codebase
8
+ # -----------------------------------------------------
9
+ # try:
10
+ # from ..core.logger import get_logger
11
+ # except ImportError:
12
+ # from utils.logger import get_logger
13
+ #
14
+ # try:
15
+ # from ..core.agent_registry import AgentRegistryAdapter
16
+ # except ImportError:
17
+ # from core.agent_registry import AgentRegistryAdapter
18
+
19
+
20
+ # AFTER: Using safe_import utility
21
+ # --------------------------------
22
+ from claude_mpm.utils.imports import safe_import, safe_import_multiple
23
+
24
+ # Method 1: Individual imports
25
+ get_logger = safe_import('..utils.logger', 'utils.logger', from_list=['get_logger'])
26
+ AgentRegistryAdapter = safe_import('..core.agent_registry', 'core.agent_registry',
27
+ from_list=['AgentRegistryAdapter'])
28
+
29
+ # Method 2: Batch imports (recommended for multiple imports)
30
+ imports = safe_import_multiple([
31
+ ('..utils.logger', 'utils.logger', ['get_logger']),
32
+ ('..core.agent_registry', 'core.agent_registry', ['AgentRegistryAdapter']),
33
+ ])
34
+
35
+ get_logger = imports.get('get_logger')
36
+ AgentRegistryAdapter = imports.get('AgentRegistryAdapter')
37
+
38
+
39
+ # MIGRATION GUIDE
40
+ # ---------------
41
+ # 1. Add import: from claude_mpm.utils.imports import safe_import
42
+ #
43
+ # 2. Replace try/except blocks:
44
+ # FROM:
45
+ # try:
46
+ # from ..module import something
47
+ # except ImportError:
48
+ # from module import something
49
+ #
50
+ # TO:
51
+ # something = safe_import('..module', 'module', from_list=['something'])
52
+ #
53
+ # 3. For multiple imports from same module:
54
+ # FROM:
55
+ # try:
56
+ # from ..module import foo, bar, baz
57
+ # except ImportError:
58
+ # from module import foo, bar, baz
59
+ #
60
+ # TO:
61
+ # foo, bar, baz = safe_import('..module', 'module', from_list=['foo', 'bar', 'baz'])
62
+ #
63
+ # 4. For whole module imports:
64
+ # FROM:
65
+ # try:
66
+ # from .. import module
67
+ # except ImportError:
68
+ # import module
69
+ #
70
+ # TO:
71
+ # module = safe_import('..module', 'module')
72
+
73
+
74
+ # BENEFITS
75
+ # --------
76
+ # 1. Reduces code duplication (97 files can be simplified)
77
+ # 2. Centralizes import error handling logic
78
+ # 3. Provides optional logging for debugging import issues
79
+ # 4. Maintains the same functionality with cleaner code
80
+ # 5. Makes the codebase more maintainable
@@ -2,26 +2,6 @@
2
2
 
3
3
  This module provides a centralized PathOperations class for common path validation
4
4
  and file operations, reducing code duplication across the codebase.
5
-
6
- ARCHITECTURAL DECISION: Separation of Concerns
7
- ---------------------------------------------
8
- This module (path_operations.py) and paths.py serve distinct purposes and should
9
- remain separate:
10
-
11
- 1. path_operations.py (this file):
12
- - Provides safe file I/O operations (read, write, copy, delete)
13
- - Handles file validation and permissions
14
- - Implements error handling and recovery mechanisms
15
- - Focus: File system operations with safety guarantees
16
-
17
- 2. paths.py:
18
- - Provides path discovery and resolution logic
19
- - Handles framework/project directory structure navigation
20
- - Implements caching for performance optimization
21
- - Focus: Path resolution and directory structure
22
-
23
- This separation follows the Single Responsibility Principle and makes the codebase
24
- more maintainable by keeping distinct concerns in separate modules.
25
5
  """
26
6
 
27
7
  import os
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env python3
2
+ """Open the dashboard statically in the browser."""
3
+
4
+ import os
5
+ import webbrowser
6
+ from pathlib import Path
7
+
8
+ def open_dashboard(port=8765, autoconnect=True):
9
+ """Open the dashboard HTML file directly in the browser.
10
+
11
+ Args:
12
+ port: Socket.IO server port to connect to
13
+ autoconnect: Whether to auto-connect on load
14
+ """
15
+ # Get the static index.html path (main entry point)
16
+ dashboard_path = Path(__file__).parent / "templates" / "index.html"
17
+
18
+ if not dashboard_path.exists():
19
+ raise FileNotFoundError(f"Dashboard not found at {dashboard_path}")
20
+
21
+ # Build URL with query parameters for Socket.IO connection
22
+ dashboard_url = f"file://{dashboard_path.absolute()}?port={port}"
23
+ if autoconnect:
24
+ dashboard_url += "&autoconnect=true"
25
+
26
+ print(f"🌐 Opening static dashboard: {dashboard_url}")
27
+ print(f"📡 Dashboard will connect to Socket.IO server at localhost:{port}")
28
+ webbrowser.open(dashboard_url)
29
+
30
+ return dashboard_url
31
+
32
+ if __name__ == "__main__":
33
+ # Test opening the dashboard
34
+ open_dashboard()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.1.3
3
+ Version: 3.2.1
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
@@ -39,6 +39,10 @@ Requires-Dist: pytest-cov; extra == "dev"
39
39
  Requires-Dist: black; extra == "dev"
40
40
  Requires-Dist: flake8; extra == "dev"
41
41
  Requires-Dist: mypy; extra == "dev"
42
+ Provides-Extra: monitor
43
+ Requires-Dist: python-socketio>=5.11.0; extra == "monitor"
44
+ Requires-Dist: aiohttp>=3.9.0; extra == "monitor"
45
+ Requires-Dist: python-engineio>=4.8.0; extra == "monitor"
42
46
  Dynamic: author-email
43
47
  Dynamic: home-page
44
48
  Dynamic: license-file
@@ -63,6 +67,9 @@ A framework for Claude that enables multi-agent workflows and extensible capabil
63
67
  # Install globally via npm (recommended)
64
68
  npm install -g @bobmatnyc/claude-mpm
65
69
 
70
+ # Or install via PyPI
71
+ pip install claude-mpm
72
+
66
73
  # Or use npx for one-time usage
67
74
  npx @bobmatnyc/claude-mpm
68
75
  ```
@@ -191,14 +198,6 @@ Claude MPM provides a modular framework for extending Claude's capabilities:
191
198
 
192
199
  ## Key Features
193
200
 
194
- ### Security Features
195
- - **File Access Restrictions**: Agents are restricted to their working directory
196
- - **Bash Command Validation**: Comprehensive validation prevents writes outside project directory
197
- - **Path Traversal Protection**: Blocks attempts to escape the working directory
198
- - **Dangerous Command Blocking**: Prevents execution of sudo, rm -rf, and other risky commands
199
- - **Security Audit Logging**: All file operations are logged for security monitoring
200
- - See [Security Documentation](docs/SECURITY.md) for details
201
-
202
201
  ### Agent System
203
202
  - Specialized agents for different domains (Research, Engineer, etc.)
204
203
  - Dynamic agent discovery and registration
@@ -218,6 +217,14 @@ Claude MPM provides a modular framework for extending Claude's capabilities:
218
217
  - Reusable business logic
219
218
  - Well-defined interfaces
220
219
 
220
+ ### Real-Time Monitoring
221
+ - **Live Dashboard**: Monitor Claude interactions with a real-time web dashboard
222
+ - **Event Tracking**: View all events, agent activities, tool usage, and file operations
223
+ - **Multi-Tab Interface**: Organized views for Events, Agents, Tools, and Files
224
+ - **Zero Configuration**: Simple `--monitor` flag enables monitoring
225
+ - **Development Focus**: Basic monitoring with enhanced features planned
226
+ - **Full Documentation**: See [monitoring documentation](docs/user/monitoring/) for complete details
227
+
221
228
  ### Session Management
222
229
  - Comprehensive logging of all interactions
223
230
  - Debug mode for troubleshooting
@@ -305,6 +312,9 @@ These tree-sitter dependencies enable:
305
312
  # Run interactive session
306
313
  claude-mpm
307
314
 
315
+ # Run with real-time monitoring dashboard
316
+ claude-mpm run --monitor
317
+
308
318
  # Run with debug logging
309
319
  claude-mpm --debug
310
320
 
@@ -324,6 +334,7 @@ Options:
324
334
 
325
335
  Commands:
326
336
  run Run Claude session (default)
337
+ --monitor Launch with real-time monitoring dashboard
327
338
  info Show framework and configuration info
328
339
  ```
329
340
 
@@ -1,27 +1,28 @@
1
- claude_mpm/__init__.py,sha256=TRneXzyApGyF7cRerpTn7aCbYLu-AJhPHjQf-dMBElQ,666
2
- claude_mpm/__main__.py,sha256=a4FWiccZuiAf3XjGlwPMEuz7hdmx_ip8HTPHXnYsY5c,1538
3
- claude_mpm/cli_enhancements.py,sha256=-N5f2u9TaxUcOJegUd3lt1FRz5ErEyYUvvgrNmMRL7Q,11814
4
- claude_mpm/cli_old.py,sha256=5GeRclnY-VNDaGnv7XUXDOniHZfACJ8HUYVUUXEHh9g,26340
5
- claude_mpm/constants.py,sha256=5AG5hgBxOC7gMNHDx0lAhS-FQ8gXhtGtqJ9Moj3S6ro,4044
1
+ claude_mpm/__init__.py,sha256=uDX48EOBrmJbY8Xv3bBpd8kibulIlmZv5jmczAjHNb8,648
2
+ claude_mpm/__main__.py,sha256=8IcM9tEbTqSN_er04eKTPX3AGo6qzRiTnPI7KfIf7rw,641
3
+ claude_mpm/constants.py,sha256=5wYR7YPHQtjZCreM_lgjoT7IPfujiuRWSb1Qu8coBxc,4216
4
+ claude_mpm/deployment_paths.py,sha256=JO7-fhhp_AkVB7ZssggHDBbee-r2sokpkqjoqnQLTmM,9073
6
5
  claude_mpm/init.py,sha256=gOreOf7BLXkT0_HrQk_As4Kz1OT_NJG_RG0i0hbY0z0,8088
7
6
  claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=TYgSd9jNBMWp4mAOBUl9dconX4RcGbvmMEScRy5uyko,3343
8
- claude_mpm/agents/INSTRUCTIONS.md,sha256=bcxaT0ww8ZOW_EeeLPUMcoeWEHOc9MRji_eIJ4b796w,8017
7
+ claude_mpm/agents/INSTRUCTIONS.md,sha256=9N0iSfShFc6TeJCajT2lnTIR2ZSS7WQHwmC0vTMTeG0,10548
9
8
  claude_mpm/agents/__init__.py,sha256=r-p7ervzjLPD7_8dm2tXX_fwvdTZy6KwKA03ofxN3sA,3275
10
9
  claude_mpm/agents/agent-template.yaml,sha256=koKJn8MCAJx0QNQMHouvIZrwvw5qjPV0U-aV-YVyk6s,2036
11
10
  claude_mpm/agents/agent_loader.py,sha256=P4h3qupJHvZL9dfb6ntB582xenYv9JbkMOVav_kNkAo,44030
12
11
  claude_mpm/agents/agent_loader_integration.py,sha256=z_DXxAIeuUD71HBYdxxvcFKoQYQxITLo8oAdN_M4LTA,7610
13
12
  claude_mpm/agents/agents_metadata.py,sha256=Xju9Yim6XSv2u1J_Swre5VJySbdxxC-9TzpOfXG8ibg,5170
14
- claude_mpm/agents/base_agent.json,sha256=wvopTu58PEdvgvjBi45J5aBA6bxs5_v1KC84CbJeRzY,3820
13
+ claude_mpm/agents/base_agent.json,sha256=UDf5YgTwJWmHgBwdN0xIS11nZD16wa-j-9Vx44shNsg,5397
15
14
  claude_mpm/agents/base_agent_loader.py,sha256=0cVD__2y-kPHr3G2YxqRazMGYUZvqKWp0O-VCFN6cxg,18993
16
15
  claude_mpm/agents/system_agent_config.py,sha256=Lke4FFjU0Vq3LLo4O7KvtHxadP7agAwC-ljCXK40h_A,23526
16
+ claude_mpm/agents/backups/INSTRUCTIONS.md,sha256=3iMs6KyLJ5HzCmzqze1FasWKLKevhqpqwb8PlYiJ7Gw,9155
17
17
  claude_mpm/agents/schema/agent_schema.json,sha256=7zuSk4VfBNTlQN33AkfJp0Y1GltlviwengIM0mb7dGg,8741
18
18
  claude_mpm/agents/templates/__init__.py,sha256=7UyIChghCnkrDctvmCRYr0Wrnn8Oj-eCdgL0KpFy1Mo,2668
19
19
  claude_mpm/agents/templates/data_engineer.json,sha256=qoUz4nR5dP3ANu-e6Lr5bP_aa1A8_L9cN3iGwZk_B4k,5910
20
20
  claude_mpm/agents/templates/documentation.json,sha256=ClQ3_zWRSxkCm1_bLuVRi5bl2IYUIjPEINZm82HjJak,3142
21
21
  claude_mpm/agents/templates/engineer.json,sha256=Vqvxdifa1ldDUiFG1EXYupHCjg1hFYT80YE7Ef1owAk,8922
22
22
  claude_mpm/agents/templates/ops.json,sha256=uxIu5Tyw-FsnV-RtT-hk2QSy9EJgesmK7eampglL5tk,2988
23
+ claude_mpm/agents/templates/pm.json,sha256=T67djHHIaud_OZeyan8BqqfRECyV9GxKHamfjLIz7JU,1350
23
24
  claude_mpm/agents/templates/qa.json,sha256=ByZw4FT1RW5sRoim2ouUPYipCi-6xI8LDaYEZ26lc6U,3076
24
- claude_mpm/agents/templates/research.json,sha256=omkijtxuVMFweqGa6OzGS8qy0Xrlr1WwfZq361-mQtk,9943
25
+ claude_mpm/agents/templates/research.json,sha256=Sb0erD1q8qXiG7QhcWC05kbe0XxNCXp1WaW3lepKofM,10013
25
26
  claude_mpm/agents/templates/security.json,sha256=5RzIlGtRjPIVSKvH_jjx-hzPbjh0TP2SeDBw_7LyfEA,3118
26
27
  claude_mpm/agents/templates/test-integration-agent.md,sha256=xyauhBApzj8qD24E0G32BF-mPCrGKES1g5S4OWPUtgc,505
27
28
  claude_mpm/agents/templates/version_control.json,sha256=YPxSufd32PMFTyVzDkOteoS944r74MD3VIToYm4DRCE,3043
@@ -35,51 +36,61 @@ claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5
35
36
  claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
36
37
  claude_mpm/agents/test_fix_deployment/.claude-pm/config/project.json,sha256=YZQgq2ri2_Y3qKzvPlC6TmzZKviDv0__GuyUOo1LbT8,146
37
38
  claude_mpm/cli/README.md,sha256=exe9V_UEsMSPXOMlvQUv5FsCuhUpPOsMvIhyDSyuFdI,3423
38
- claude_mpm/cli/__init__.py,sha256=2XDksLwDGa9tzddxyxDESPySrchHfzK3FCK_WMSYYEk,6267
39
- claude_mpm/cli/parser.py,sha256=GsyaMK2td3kPji-OLfNjfgIza2Qe4iEeq6Wr-sebVKc,10737
40
- claude_mpm/cli/utils.py,sha256=T_te2m97lIQ0P5FsUhc56NZOQcEDm3uKPVyvcm5cxjg,6522
41
- claude_mpm/cli/commands/__init__.py,sha256=3Exhq4RH-2Sq2ugwc9fFW3vDbzJgSu2JaoX01vXjdRE,454
42
- claude_mpm/cli/commands/agents.py,sha256=jjy0IxtXgyMIEZici8yKdnAGA6hGk9FA8DxGaGzOWlE,7193
43
- claude_mpm/cli/commands/info.py,sha256=_xjhLWbdxWYQmI8MaBmwh0XmveVw2q3VMJKVbZ8agCU,3136
44
- claude_mpm/cli/commands/run.py,sha256=EcXpkqn98_1xMeTjc1IxKLhAteSBw7dy-anCltd2irI,3582
45
- claude_mpm/cli/commands/tickets.py,sha256=ouO8zPss99fd7hIt0YkqUS-6ize2HdUSRx1LJAflDdA,2318
46
- claude_mpm/cli/commands/ui.py,sha256=iKXWdaos-gMaqpT62RQ-juhmM0bQLsqi3Z-JiLrSArg,2643
39
+ claude_mpm/cli/__init__.py,sha256=OBcyg1xLPddsPURZPCvVhUfHkeak7Ph2qTvhOGYL7rQ,5506
40
+ claude_mpm/cli/parser.py,sha256=Cd-_McqKH8uwcD81fHkZMUmQtoZmVMJFenON8V_mZtA,13518
41
+ claude_mpm/cli/utils.py,sha256=k_EHLcjDAzYhDeVeWvE-vqvHsEoG6Cc6Yk7fs3YoRVA,6022
42
+ claude_mpm/cli/commands/__init__.py,sha256=6Oh31iPNWcAehZWIIkX2hoSUBTcvFU733P7Q8Ssf56g,509
43
+ claude_mpm/cli/commands/agents.py,sha256=FqqEQcfAfCxjz_E7fGQUtLznloJLz8fWQtnjQhkbalQ,6795
44
+ claude_mpm/cli/commands/info.py,sha256=ETL6jC08OTQVTPjs219Y0m3FzfKOUlI0-yI81AI8FXY,2990
45
+ claude_mpm/cli/commands/memory.py,sha256=6odAe-ReIVoRC6NdCsQHPGss51sF9fBQOlmXub7sysE,7600
46
+ claude_mpm/cli/commands/run.py,sha256=FVEoYBgKSPNYoC9CFzjNc8m8irgvIUainqfhGVMiKQc,24173
47
+ claude_mpm/cli/commands/tickets.py,sha256=SXyGtHSyGJwTeJwDAHf7kRbdiG1DlZkXkod5UoNy7Ik,2150
48
+ claude_mpm/cli/commands/ui.py,sha256=FhBQiOKW61cNduyryRu0UhC366d6o1eEkBgbPd7Au1w,1900
47
49
  claude_mpm/cli_module/__init__.py,sha256=CkMp4gzWKoZZF_qKyBDi2sQaZw_GLWZYLtKouv-4f8s,390
48
50
  claude_mpm/cli_module/args.py,sha256=nilYpziBsoEySO4W1hQ2MRJyn9TFx3c3TrucyMMhRtk,7970
49
51
  claude_mpm/cli_module/commands.py,sha256=CBNfO-bXrZ0spjeW_7-swprEq5V4PQSc0qhl9SLP5UU,7168
50
52
  claude_mpm/cli_module/migration_example.py,sha256=C-_GbsW8dGzutnNeRLLld74ibDLyAOQx0stdpYZS0hs,6137
51
53
  claude_mpm/cli_module/refactoring_guide.md,sha256=fl1PGwLZAj4OYWmU0syg1jDd81PqK7rC7rhwgFId5BE,7048
52
54
  claude_mpm/config/__init__.py,sha256=p31JuaXLDHgIgoAbHApNvctN2IEZYq2MBkkXROdhbH8,105
53
- claude_mpm/core/__init__.py,sha256=hE29BeE3qb8vC1-wiKjPh60WZebCwfo9UAUGM1zQnkc,1206
55
+ claude_mpm/config/socketio_config.py,sha256=fSzqleM9EzehWg3U_--0y_zVgXZo7Q45JCI_a2xPs1g,9452
56
+ claude_mpm/core/__init__.py,sha256=a2Irt1l4-UbQQU7FuEaTK_DlKOg3UsMHnZN-g04SYZ0,1194
54
57
  claude_mpm/core/agent_name_normalizer.py,sha256=-X68oz3_74t9BRbHA54NEGyjy0xjTsGp_sCUHDtKp1s,9269
55
- claude_mpm/core/agent_registry.py,sha256=2GYTWYxjKF0HktW9HJc5XfECYjIVZLcAKX_dwiwyY08,20556
58
+ claude_mpm/core/agent_registry.py,sha256=4MAfc7xDlrYWWkHmDMRmWE8q32teuCmIcud9D0I0dLo,20496
56
59
  claude_mpm/core/agent_registry.py.bak,sha256=cXB0yqhonE1XsXmWcdwyNuvv8yddK_PyZILDCmwCZ_Q,10161
57
60
  claude_mpm/core/agent_session_manager.py,sha256=6alXQr4gnMR-unT4J1ryEtTxJqQolA0-NgPQN6X3lqY,11212
58
61
  claude_mpm/core/base_service.py,sha256=qWI_rUybHmmKroptJxcE4rzPBhK8yeMKIt2JqnqJB7E,29125
59
62
  claude_mpm/core/base_service.py.bak,sha256=48A8eI_HPqxYm42X5jaTo8zQVOfFFXe7SqIUo-8IyC4,13124
60
- claude_mpm/core/config.py,sha256=QNPufRWzXl99wAz14Gm2T_CG5K5n8d4eOjmpaxVllv0,12371
63
+ claude_mpm/core/claude_runner.py,sha256=dsLosbf2e7zYof4SirTuLM048EF4OEG1C6tEs7S-ZV8,37520
64
+ claude_mpm/core/config.py,sha256=_V0sbCOFNabm9nZUuRAZ9AGe65A03FbFY36QFCrDdHo,13464
61
65
  claude_mpm/core/config_aliases.py,sha256=8eqA4wpWViIDm_9pL3f9j7cR_ssmhOYYiY2UzHrfUzg,10058
62
66
  claude_mpm/core/container.py,sha256=P4c4nSo_USSfHTxvpR1sQkVGNsgqozZBN27l3IXqiDc,12216
63
- claude_mpm/core/factories.py,sha256=QQfGBako6TmuUa_VFLbjSUIQE4zRs18Ft8bcGceisfI,7493
67
+ claude_mpm/core/factories.py,sha256=Qh2n_x112ZIPWEfwFley9bb9IZcSG38LkpT3uValyDk,7484
64
68
  claude_mpm/core/framework_loader.py,sha256=SdONNh8a7vSicr4vVuRzd7OqgDMIyg9k_xxbr8bLRi8,19547
69
+ claude_mpm/core/hook_manager.py,sha256=pVjVTu54FvpzI4F91VWX-hNStTeQelKCUM3qLjE8MhE,7045
65
70
  claude_mpm/core/injectable_service.py,sha256=7fOny9c6x8IJ9hVZmFql1eNDXXB1jcWbsxfTKbMZk74,7497
66
71
  claude_mpm/core/interfaces.py,sha256=TpP474EKEng-1TrjKUsN69qq6dXy8zIjicS7iV-ZPV0,15269
67
72
  claude_mpm/core/logger.py,sha256=wqYlUy8wlSXyTWOeWCGNYaIWdiFYzT7yw1U0vdT3R_8,15894
68
73
  claude_mpm/core/minimal_framework_loader.py,sha256=liYS4IyuW_aFK7yhRDZwTwT-3q09fT3wIJSUzkI93Ko,3673
69
74
  claude_mpm/core/mixins.py,sha256=rTEH-7FDpNiLB8oo6mSb0CLarJklv4fDJw1xM-gr5wI,5599
70
- claude_mpm/core/service_registry.py,sha256=C1-m8F3eE2pnKS42PXO7E30N-IEayIF3UCjOLFB3jk8,10538
75
+ claude_mpm/core/pm_hook_interceptor.py,sha256=PRaloqgxn-Alt9HflrywYXRL2GL3Ixb8Wxov8GfAMMU,7173
76
+ claude_mpm/core/service_registry.py,sha256=wKJUO1g4UFA4dUpE3RkIYz1Ek8kIh4XfvU1kFeLCl2Q,10529
71
77
  claude_mpm/core/session_manager.py,sha256=3rO4KGZp8Qd_cUw6OWv4jyxGCUaL_MNPgCCpnwQt12A,6581
72
- claude_mpm/core/simple_runner.py,sha256=FMInbYlXnolqmBlXpe37VUgWNheb3liHou7_BPOwYm8,26132
78
+ claude_mpm/core/simple_runner.py,sha256=dsLosbf2e7zYof4SirTuLM048EF4OEG1C6tEs7S-ZV8,37520
79
+ claude_mpm/core/socketio_pool.py,sha256=B83uDsmqRF5S0QDwwatyKS-m2SdTvotCVfc3_2uQxd8,22438
73
80
  claude_mpm/core/tool_access_control.py,sha256=htZbDhC8s7D7BVqfmk0BwRrYJnlnUAk8_NeJKOaeNlg,6632
81
+ claude_mpm/core/websocket_handler.py,sha256=1PwnZ6AzAOgfTWO5n4T52fSQxAuboj7bHOmL3TItq6M,8895
82
+ claude_mpm/experimental/cli_enhancements.py,sha256=-N5f2u9TaxUcOJegUd3lt1FRz5ErEyYUvvgrNmMRL7Q,11814
74
83
  claude_mpm/generators/__init__.py,sha256=l53aBn6kBQSDz3b6bZkMCJBcEmYnV9hHEZq8LKzXgH8,152
75
84
  claude_mpm/generators/agent_profile_generator.py,sha256=2HjOscogSyvrtQj8KwdgNPS6Ym_QvgX1BMeauQZewZA,5751
76
85
  claude_mpm/hooks/README.md,sha256=AjW-V7WQGf9o5X9otNl5k8rtal_MdyToFqVx_pudOXs,3289
77
86
  claude_mpm/hooks/__init__.py,sha256=Y3JJ_mEtvRP07r_gXkju4c0s18bjIXGH1uAbhSw1ES0,166
78
87
  claude_mpm/hooks/base_hook.py,sha256=a4V2EKEG02QQB0h-pnxhZI-fouKBLYbdBLckcaNuf0k,5098
88
+ claude_mpm/hooks/memory_integration_hook.py,sha256=g-I4rp3Q2Uwh-gt2KOX0Yy6Av2pO8hzWmzZilxufnAY,14321
79
89
  claude_mpm/hooks/tool_call_interceptor.py,sha256=08_Odgm6Sg1zBJhGjwzVa03AReeBPZHTjndyjEO99cY,7629
80
90
  claude_mpm/hooks/validation_hooks.py,sha256=7TU2N4SzCm2nwpsR0xiNKsHQNsWODnOVAmK9jHq1QqM,6582
81
91
  claude_mpm/hooks/builtin/__init__.py,sha256=Tfh3dIGxlQRUKBzR_MWC64WAKJ0Q_POsVVFl7lz9CD4,36
82
92
  claude_mpm/hooks/builtin/logging_hook_example.py,sha256=SyfdAH9ENTIpMhw2IeqqZpXNBUakYDI1yF5DFS0RJZ4,4971
93
+ claude_mpm/hooks/builtin/memory_hooks_example.py,sha256=Nu5VUSfT_0b23cVK_uQthCn6c3wQWEs5REjX57xrb8Y,2368
83
94
  claude_mpm/hooks/builtin/mpm_command_hook.py,sha256=PhQl1FifaB61gRrBOIXAim0R-XUBIzZwLdjb6WQuEGQ,4541
84
95
  claude_mpm/hooks/builtin/post_delegation_hook_example.py,sha256=54OJKRgjdXH8A2LHypbXoMlCNlmWXBY5Fvk0-VWq_fI,4596
85
96
  claude_mpm/hooks/builtin/pre_delegation_hook_example.py,sha256=JOAdDm46be_ol7uSmnQaE0jQS8SsiuGei80Auj3sdL8,4692
@@ -88,17 +99,12 @@ claude_mpm/hooks/builtin/ticket_extraction_hook_example.py,sha256=4wNhS2tFUXgdcv
88
99
  claude_mpm/hooks/builtin/todo_agent_prefix_hook.py,sha256=v_4w2vcZIt0bkZxqdHmgtN79yHZ1gviuhhBws0FHpIQ,10226
89
100
  claude_mpm/hooks/builtin/workflow_start_hook.py,sha256=EQrtYD9qLMLSYPl3oQinEheZAJ2i5EO_h2jhhR8lmt0,7490
90
101
  claude_mpm/hooks/claude_hooks/__init__.py,sha256=bMUwt2RzDGAcEbtDMA7vWS1uJsauOY0OixIe4pHwgQ0,129
91
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=ehvYMFrPLesENTjRtuwssN7g9-cdpaaBoYlZB_WxGTs,32816
92
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=6n0-G317jIrPuNRGnAyFvBbNM4gVzKEat_WSbpvKN-g,1742
93
- claude_mpm/models/__init__.py,sha256=4HWlsV1XfzEzAFTM25E46jPVfvQMdAlyQ9bgJmJAo6M,2171
102
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=BHjMqyr_EiHPYhNa8XY2f8MPwia-KESBloM5CTMm9WU,31687
103
+ claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=otLBTac_sBI3s5dH--9nok59tU91_U_vV5kmzc2fmRo,1995
104
+ claude_mpm/models/__init__.py,sha256=vy2NLX2KT9QeH76SjCYh9dOYKPLRgxGrnwkQFAg08gc,465
94
105
  claude_mpm/models/agent_definition.py,sha256=y9XQOED_maOyiYKhNB8H8MfJJMBN0vIYPS_wCXnRJmA,6647
95
- claude_mpm/models/common.py,sha256=Yhqx9h7e0hFx-uTHc2YyLVbNo3CmjiDPSSVGKAhyWAk,1359
96
- claude_mpm/models/lifecycle.py,sha256=RAZYyB1X5_y83Jxrfx6DReMfoJvi222typU6iJ13zcE,2803
97
- claude_mpm/models/modification.py,sha256=Ttx1hadsLsiME_L069DQLnMza4lqjjDav6fadTVhVlE,4280
98
- claude_mpm/models/persistence.py,sha256=hyQn83As-D8Akmu95va2To5nPFWnUvY8WRL0ozzvmJk,1659
99
- claude_mpm/models/registry.py,sha256=T0v7jTO2I8qIak9JKwavZKL0CrZ8nVJXVrf129VUUSM,3122
100
106
  claude_mpm/orchestration/SUBPROCESS_DESIGN.md,sha256=YwToiT1_NXblv1XIWhWPNc2uKzDvqY2E_Nix8qK7qk0,2136
101
- claude_mpm/orchestration/__init__.py,sha256=C-cwldtfBCgV19mKnJa5U1XiKw1rAZvx-kK61nIdcao,205
107
+ claude_mpm/orchestration/__init__.py,sha256=hnrG5vtUuEFi5E8kRa1XKFWtlWL_FxffwGMrCM_6YJg,205
102
108
  claude_mpm/orchestration/archive/direct_orchestrator.py,sha256=j-IP-st-Xi9Xf33i-BLPZOE_kkxSZxNNuFZmp6MTuZY,7884
103
109
  claude_mpm/orchestration/archive/factory.py,sha256=p2g79cXcCRVfLhHrlR_3nMaZkviacVyKjCelCLAa_j0,8249
104
110
  claude_mpm/orchestration/archive/hook_enabled_orchestrator.py,sha256=OeeKj-bDC3W_ze_2aqmH0sP4NrATvfzRReirdrw1ksY,7348
@@ -120,27 +126,38 @@ claude_mpm/schemas/ticket_workflow_schema.json,sha256=AVedOeNfOdJdERaxEz4ZJj4aVZ
120
126
  claude_mpm/schemas/workflow_validator.py,sha256=qRgGodJoIZQaLfZ8OzWz3Y9eVNz3ckrQwkJ2RvccxAs,17175
121
127
  claude_mpm/schemas/examples/standard_workflow.json,sha256=POQdxPIoJRD2qe4-17a35pGqFX5hfmGttXWPfeZ8qRs,13835
122
128
  claude_mpm/scripts/__init__.py,sha256=M2n9fQeyfILC8gogXvJv6ixnu7hwpqLEqLWJRaUN0MU,37
129
+ claude_mpm/scripts/claude-mpm-socketio,sha256=usdZgOQs0vjAKBhUcGJoRPnzJt3wYZDQM88t71TTVeY,1029
130
+ claude_mpm/scripts/claude_mpm_monitor.html,sha256=24g1YWNB8PZ2S_q2xLQycK0Z06e2C7yOTsEm6qQRVUI,17634
131
+ claude_mpm/scripts/install_socketio_server.py,sha256=Bx3BL48EF1peH111k_HU7tQdcUU6QVthAemGQcPsano,15522
132
+ claude_mpm/scripts/launch_monitor.py,sha256=fAgRFJknrYq31SEWD9oEAEH2xvR3Lh_bzRPGDKEAFGg,4437
133
+ claude_mpm/scripts/manage_version.py,sha256=5c86LD-_m0AlWqfgjRF6BH3Jc7n_nm5Z7hFVqB3iExQ,17524
134
+ claude_mpm/scripts/socketio_daemon.py,sha256=HuRr7kzwwZskgLjHqf0wSW8IndsTs2s-aeR1tgnPMag,5115
135
+ claude_mpm/scripts/socketio_server_manager.py,sha256=94uTdTuMHvTZrBNSrOHSKMz_z0AINl3uoc44msWfEz8,15522
123
136
  claude_mpm/scripts/ticket.py,sha256=GmFimtTJxc927cCzJvvJH3gvoxXQtAB-W-xnuclcvNs,9350
124
- claude_mpm/security/__init__.py,sha256=xxUJ-v0D08x4OewQD2v4XFctEJ5I4EkglgnyO1NjJLk,232
125
- claude_mpm/security/bash_validator.py,sha256=vEOED6PkgeNazAjKmPpGLmlbVQAVCHwUiG7x0WBJdA4,15784
126
- claude_mpm/services/__init__.py,sha256=-EBm07Lh9mjcofiQHCqyCCQJMLi9akVArPlz8i_kEOo,226
137
+ claude_mpm/services/__init__.py,sha256=HhIBqyTtIKnKMAgFXJCX37LDosq61dQff1_5rbyT7Y8,408
127
138
  claude_mpm/services/agent_capabilities_generator.py,sha256=hWG0zV2InmzrDMxSbQzjVBBTzEaxg0bFxl8tmTMJ8qA,6565
128
139
  claude_mpm/services/agent_deployment.py,sha256=DtK1BX2yCrutUkQdVPD01mYHm-ya36l3EPOnEcaDfog,67961
129
- claude_mpm/services/agent_lifecycle_manager.py,sha256=XLaqk0XBCmQcgIDZL4f404PczcKoi-FJn67cSfcVCNw,48703
140
+ claude_mpm/services/agent_lifecycle_manager.py,sha256=fWggWu5rT7FkDQrRHyw05Y4KaNN9cXeaCinsymPJwM4,50127
130
141
  claude_mpm/services/agent_management_service.py,sha256=eX5n6w17b9urcogVdr4V-kXcuo7yyjORTrIihjF8PeQ,22853
131
- claude_mpm/services/agent_modification_tracker.py,sha256=MVJRn0cWdO5UVw3du8MC355bpYttKCBz6LmW1dq3eU4,31506
132
- claude_mpm/services/agent_persistence_service.py,sha256=Ls5ms9C-RDhUJE5BOyg15VGc4nJflErOJSgAIGHOa3s,2291
142
+ claude_mpm/services/agent_memory_manager.py,sha256=Rs0aHEU2txOGf3v3tYZ-11DCmmhp8osFS9ltxAFWclw,26703
143
+ claude_mpm/services/agent_modification_tracker.py,sha256=uxELrXtFt5Xlv0mhRbq5ynagEowczTRrv3mAp-aRZFc,34519
144
+ claude_mpm/services/agent_persistence_service.py,sha256=B_Vz43zCKWq47zWkoibcia-Qwn2y3gARu7MV5Cpiptc,2893
133
145
  claude_mpm/services/agent_profile_loader.py,sha256=4D1Xj0vgqV8wN7Y3r8lijh7ghy5cVGU5t5s931sVqGc,23133
134
- claude_mpm/services/agent_registry.py,sha256=Hi8TAhr-bIR5NW8QV6chkobtU-fTiRoZqrgiwViusYs,23148
146
+ claude_mpm/services/agent_registry.py,sha256=vn8CEW0vppj_0EY2NofmNRZEnpV70mlWiX2kAViFDRg,24374
135
147
  claude_mpm/services/agent_versioning.py,sha256=y4SiKGKdTn-9_Ht6nGlmKGJW6MLgEHZUy5SR1OPTZZM,1108
136
148
  claude_mpm/services/base_agent_manager.py,sha256=WEcfzdMaFXmXUSoEYEPNeGu8dvqjIv53zyUU0ITrhsM,14987
137
149
  claude_mpm/services/deployed_agent_discovery.py,sha256=GoXhho5EBz_FZDDl4xUWW_BnP3hfymbV1ePorRrhO_U,9443
138
150
  claude_mpm/services/framework_agent_loader.py,sha256=QdRSYRurYF3YbAXJwIGei71BffD5AqOVcV3ktRPdk7g,14018
139
151
  claude_mpm/services/framework_claude_md_generator.py,sha256=3kHmkRLHTex6HFZ4DhbLVQb48j-5dAoy1q6UW1Qf7U8,22914
140
- claude_mpm/services/legacy_ticketing_service.py,sha256=fd3nC5YG5-KblC5zKkpzNFN3-G3h6KYgWHTd_edzJ4g,17042
152
+ claude_mpm/services/hook_service.py,sha256=hkpN8mXXYCwzdLVJwsoVg_fw5seEmei-q0ZzQyNoCXA,14200
141
153
  claude_mpm/services/shared_prompt_cache.py,sha256=D04lrRWyg0lHyqGcAHy7IYvRHRKSg6EOpAJwBUPa2wk,29890
142
- claude_mpm/services/ticket_manager.py,sha256=q7nHGfmW0SwIGa1FoK-D5Z30VIyGW6wUZzL_Za4AGk4,7603
143
- claude_mpm/services/ticket_manager_dependency_injection.py,sha256=MyBaCtJXiM5BqAPYf9lXOawR7QmkIa6j97J6l6v_rEg,12185
154
+ claude_mpm/services/socketio_client_manager.py,sha256=2Ly63iiGA_BUzf73UwQDu9Q75wA1C4O1CWFv8hi8bms,18074
155
+ claude_mpm/services/socketio_server.py,sha256=PoLOAyLi3xqPt7fAOTKjWXns48e5zyUyL26bPl0nuM8,28712
156
+ claude_mpm/services/standalone_socketio_server.py,sha256=XhsJ40Me3eSFHDpweIouy7dIqHK1aubikHCY275mUXk,24764
157
+ claude_mpm/services/ticket_manager.py,sha256=Ki11YjBkDax8BFVSaDdOBk3K4VU5gvdbgq9AmCyyoZ0,7454
158
+ claude_mpm/services/ticket_manager_di.py,sha256=pIsIGncbboKzBYSRQTO7ZX5MuQzV6iFfIflvKe6u1jw,11123
159
+ claude_mpm/services/ticketing_service_original.py,sha256=Dg3TYKsy0Z3JCqV5rlMBXeMrhrkAGxOgAMUNRZtJIhw,16680
160
+ claude_mpm/services/websocket_server.py,sha256=mC033w8TjwUGIv1r4uedtvQBPQQ_X7ZUA-u3ANugdMo,13553
144
161
  claude_mpm/services/framework_claude_md_generator/README.md,sha256=_-ty72t2afPagDVVUEizPkhs4BYkCeqCnZDNPgZAYtY,3511
145
162
  claude_mpm/services/framework_claude_md_generator/__init__.py,sha256=OtnwxLiJektfFtsKdkHM1X27rKkFiNd_rcf4843ziKw,7334
146
163
  claude_mpm/services/framework_claude_md_generator/content_assembler.py,sha256=CZlw84bBWjvK68VQhjAdLnMxXBXipZtcdyPtYWLdrKo,6590
@@ -178,22 +195,25 @@ claude_mpm/services/version_control/__init__.py,sha256=5BFbqFUMtpCyDbMcekRjCQ4jg
178
195
  claude_mpm/services/version_control/branch_strategy.py,sha256=MTjWinbJEp4N-QqBi6Olop7LNtvhCEPVnfCwK-29O-A,22999
179
196
  claude_mpm/services/version_control/conflict_resolution.py,sha256=yWa9fzmkds1U0EBw-LyTZvlj56MpEEsRmryLQg4KDdU,26084
180
197
  claude_mpm/services/version_control/git_operations.py,sha256=L69Aduzwq4IipIGV3iiwNQTlgVi6peh-LzJTks7bvxo,27499
181
- claude_mpm/services/version_control/semantic_versioning.py,sha256=JieqW46gA_dv9kwjLeT44XOMH0c_RplkjlLQuB_Nzw8,29168
198
+ claude_mpm/services/version_control/semantic_versioning.py,sha256=xiDsirwq8CApnOBc4UMf4VcrgolzQgfK2T_Yi3mY7Bk,29039
182
199
  claude_mpm/ui/__init__.py,sha256=Snxxm3pYXPKfv9gBG_MZKxXkZk8c4ZJAQIvh-rjjCFo,45
183
200
  claude_mpm/ui/rich_terminal_ui.py,sha256=gx_9TD0kR4Exq867pHjVVs_b-gw1q267t5oA2ZDSkQU,10078
184
201
  claude_mpm/ui/terminal_ui.py,sha256=E_M-L-6EuGp6L8pRpaWEhTqf-ddDXhZp5W85D0XNRPw,11928
185
202
  claude_mpm/utils/__init__.py,sha256=E8Hvv6ykL6rnnc8-YmfoGNpRCZbcIirxcFuNz7YvDIg,346
186
203
  claude_mpm/utils/config_manager.py,sha256=TlekZYIWOz_ouWHQU4Gc-zckhoFK9AqA25b6A_XZdDc,16412
204
+ claude_mpm/utils/dependency_manager.py,sha256=LcMFoXyGcqEHVvmNKpU-AyyYclgI6a722Mt9YVejXTM,7243
187
205
  claude_mpm/utils/error_handler.py,sha256=W_Zc0FrKudpXvxT66Oxx0v8WkR8HA2KlynzzGy3eGcU,8168
188
206
  claude_mpm/utils/framework_detection.py,sha256=nzs1qRZK9K-zT0382z1FpGDvgzUNrUg8rBL-O_WLq-Q,1217
207
+ claude_mpm/utils/import_migration_example.py,sha256=W4a4XH3FY_VBB00BB8Lae2aRPM021PxLHzdUfEs0B5w,2463
189
208
  claude_mpm/utils/imports.py,sha256=wX-SOXUHbemx01MHRGQpVwajzXH6qYdQkYNFCIbb2mw,6851
190
- claude_mpm/utils/path_operations.py,sha256=KhaWtduSK14aIsReIZ5-2fBOdSCrt4TLcDXiOXzlvrk,12450
209
+ claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E_eT-kM,11614
191
210
  claude_mpm/utils/paths.py,sha256=Xv0SZWdZRkRjN9e6clBcA165ya00GNQxt7SwMz51tfA,10153
192
211
  claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
193
212
  claude_mpm/validation/agent_validator.py,sha256=GCA2b2rKhKDeaNyUqWxTiWIs3sDdWjD9cgOFRp9K6ic,18227
194
- claude_mpm-3.1.3.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
195
- claude_mpm-3.1.3.dist-info/METADATA,sha256=SLm5vjVJU9LrnH7Ev_mC1c_RxXDdB40CSAfiFg3aIyU,14663
196
- claude_mpm-3.1.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
197
- claude_mpm-3.1.3.dist-info/entry_points.txt,sha256=PknO31um7d8bt6GjOiVeYpdJpjND0_C1z-LQfY6UfiU,142
198
- claude_mpm-3.1.3.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
199
- claude_mpm-3.1.3.dist-info/RECORD,,
213
+ claude_mpm/web/open_dashboard.py,sha256=aXUc6LzUMwmTQMkl_h2jjvICimr-ED4FPMHP_9mnrgQ,1108
214
+ claude_mpm-3.2.1.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
215
+ claude_mpm-3.2.1.dist-info/METADATA,sha256=Huw-Iij7OODoeQTLXpjKOHtaWuArPOy4g_iM9ul3Rlw,15029
216
+ claude_mpm-3.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
217
+ claude_mpm-3.2.1.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
218
+ claude_mpm-3.2.1.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
219
+ claude_mpm-3.2.1.dist-info/RECORD,,