claude-mpm 4.0.34__py3-none-any.whl → 4.1.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 (35) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/INSTRUCTIONS.md +70 -2
  3. claude_mpm/agents/OUTPUT_STYLE.md +0 -11
  4. claude_mpm/agents/WORKFLOW.md +14 -2
  5. claude_mpm/agents/templates/web_qa.json +85 -58
  6. claude_mpm/agents/templates/web_ui.json +3 -3
  7. claude_mpm/cli/__init__.py +48 -7
  8. claude_mpm/cli/commands/agents.py +82 -0
  9. claude_mpm/cli/commands/cleanup_orphaned_agents.py +150 -0
  10. claude_mpm/cli/commands/mcp_pipx_config.py +199 -0
  11. claude_mpm/cli/parsers/agents_parser.py +27 -0
  12. claude_mpm/cli/parsers/base_parser.py +6 -0
  13. claude_mpm/cli/startup_logging.py +75 -0
  14. claude_mpm/dashboard/static/js/components/build-tracker.js +35 -1
  15. claude_mpm/dashboard/static/js/socket-client.js +7 -5
  16. claude_mpm/hooks/claude_hooks/connection_pool.py +13 -2
  17. claude_mpm/hooks/claude_hooks/hook_handler.py +67 -167
  18. claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -1
  19. claude_mpm/services/agents/deployment/agent_template_builder.py +2 -1
  20. claude_mpm/services/agents/deployment/agent_version_manager.py +4 -1
  21. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +207 -10
  22. claude_mpm/services/event_bus/config.py +165 -0
  23. claude_mpm/services/event_bus/event_bus.py +35 -20
  24. claude_mpm/services/event_bus/relay.py +8 -12
  25. claude_mpm/services/mcp_gateway/auto_configure.py +372 -0
  26. claude_mpm/services/socketio/handlers/connection.py +3 -3
  27. claude_mpm/services/socketio/server/core.py +25 -2
  28. claude_mpm/services/socketio/server/eventbus_integration.py +189 -0
  29. claude_mpm/services/socketio/server/main.py +25 -0
  30. {claude_mpm-4.0.34.dist-info → claude_mpm-4.1.1.dist-info}/METADATA +25 -7
  31. {claude_mpm-4.0.34.dist-info → claude_mpm-4.1.1.dist-info}/RECORD +35 -30
  32. {claude_mpm-4.0.34.dist-info → claude_mpm-4.1.1.dist-info}/WHEEL +0 -0
  33. {claude_mpm-4.0.34.dist-info → claude_mpm-4.1.1.dist-info}/entry_points.txt +0 -0
  34. {claude_mpm-4.0.34.dist-info → claude_mpm-4.1.1.dist-info}/licenses/LICENSE +0 -0
  35. {claude_mpm-4.0.34.dist-info → claude_mpm-4.1.1.dist-info}/top_level.txt +0 -0
@@ -31,6 +31,9 @@ except ImportError:
31
31
  aiohttp = None
32
32
  web = None
33
33
 
34
+ # Import VersionService for dynamic version retrieval
35
+ from claude_mpm.services.version_service import VersionService
36
+
34
37
  from ....core.constants import (
35
38
  NetworkConfig,
36
39
  PerformanceConfig,
@@ -158,11 +161,14 @@ class SocketIOServerCore:
158
161
  async def _start_server(self):
159
162
  """Start the Socket.IO server with aiohttp."""
160
163
  try:
161
- # Create Socket.IO server
164
+ # Create Socket.IO server with proper ping/pong configuration
162
165
  self.sio = socketio.AsyncServer(
163
166
  cors_allowed_origins="*",
164
167
  logger=False, # Disable Socket.IO's own logging
165
168
  engineio_logger=False,
169
+ ping_interval=25, # Send ping every 25 seconds
170
+ ping_timeout=60, # Wait 60 seconds for pong response
171
+ max_http_buffer_size=1e8, # 100MB max buffer
166
172
  )
167
173
 
168
174
  # Create aiohttp application
@@ -255,6 +261,23 @@ class SocketIOServerCore:
255
261
  return web.Response(text="Dashboard not available", status=404)
256
262
 
257
263
  self.app.router.add_get("/", index_handler)
264
+
265
+ # Serve version.json from dashboard directory
266
+ async def version_handler(request):
267
+ version_file = self.dashboard_path / "version.json"
268
+ if version_file.exists():
269
+ self.logger.debug(f"Serving version.json from: {version_file}")
270
+ return web.FileResponse(version_file)
271
+ else:
272
+ # Return default version info if file doesn't exist
273
+ return web.json_response({
274
+ "version": "1.0.0",
275
+ "build": 1,
276
+ "formatted_build": "0001",
277
+ "full_version": "v1.0.0-0001"
278
+ })
279
+
280
+ self.app.router.add_get("/version.json", version_handler)
258
281
 
259
282
  # Serve static assets (CSS, JS) from the dashboard static directory
260
283
  dashboard_static_path = (
@@ -426,7 +449,7 @@ class SocketIOServerCore:
426
449
  "total_events": self.stats.get("events_sent", 0),
427
450
  "active_sessions": active_sessions,
428
451
  "server_info": {
429
- "version": "4.0.2",
452
+ "version": VersionService().get_version(),
430
453
  "port": self.port,
431
454
  },
432
455
  },
@@ -0,0 +1,189 @@
1
+ """EventBus integration for Socket.IO server.
2
+
3
+ WHY this integration module:
4
+ - Adds EventBus relay to Socket.IO server without modifying core
5
+ - Maintains backward compatibility with existing server
6
+ - Easy to enable/disable via configuration
7
+ - Provides clean separation of concerns
8
+ """
9
+
10
+ import asyncio
11
+ import logging
12
+ from typing import Optional
13
+
14
+ from claude_mpm.services.event_bus import EventBus, SocketIORelay
15
+ from claude_mpm.services.event_bus.config import get_config
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ class EventBusIntegration:
21
+ """Integrates EventBus relay with Socket.IO server.
22
+
23
+ WHY integration class:
24
+ - Encapsulates EventBus setup and teardown
25
+ - Provides lifecycle management for relay
26
+ - Handles configuration and error cases
27
+ - Can be easily added to existing server
28
+ """
29
+
30
+ def __init__(self, server_instance=None):
31
+ """Initialize EventBus integration.
32
+
33
+ Args:
34
+ server_instance: Optional Socket.IO server instance
35
+ """
36
+ self.server = server_instance
37
+ self.relay: Optional[SocketIORelay] = None
38
+ self.event_bus: Optional[EventBus] = None
39
+ self.config = get_config()
40
+ self.enabled = self.config.enabled and self.config.relay_enabled
41
+
42
+ def setup(self, port: Optional[int] = None) -> bool:
43
+ """Set up EventBus and relay.
44
+
45
+ Args:
46
+ port: Optional Socket.IO server port
47
+
48
+ Returns:
49
+ bool: True if setup successful
50
+ """
51
+ if not self.enabled:
52
+ logger.info("EventBus integration disabled by configuration")
53
+ return False
54
+
55
+ try:
56
+ # Get EventBus instance
57
+ self.event_bus = EventBus.get_instance()
58
+
59
+ # Apply configuration
60
+ self.config.apply_to_eventbus(self.event_bus)
61
+
62
+ # Create and configure relay
63
+ relay_port = port or self.config.relay_port
64
+ self.relay = SocketIORelay(relay_port)
65
+ self.config.apply_to_relay(self.relay)
66
+
67
+ # Start the relay
68
+ self.relay.start()
69
+
70
+ logger.info(f"EventBus integration setup complete (port: {relay_port})")
71
+ return True
72
+
73
+ except Exception as e:
74
+ logger.error(f"Failed to setup EventBus integration: {e}")
75
+ self.enabled = False
76
+ return False
77
+
78
+ def teardown(self) -> None:
79
+ """Tear down EventBus integration."""
80
+ if self.relay:
81
+ try:
82
+ self.relay.stop()
83
+ logger.info("EventBus relay stopped")
84
+ except Exception as e:
85
+ logger.error(f"Error stopping relay: {e}")
86
+ finally:
87
+ self.relay = None
88
+
89
+ def is_active(self) -> bool:
90
+ """Check if integration is active.
91
+
92
+ Returns:
93
+ bool: True if relay is active and connected
94
+ """
95
+ return (
96
+ self.enabled and
97
+ self.relay is not None and
98
+ self.relay.enabled
99
+ )
100
+
101
+ def get_stats(self) -> dict:
102
+ """Get integration statistics.
103
+
104
+ Returns:
105
+ dict: Combined stats from EventBus and relay
106
+ """
107
+ stats = {
108
+ "enabled": self.enabled,
109
+ "active": self.is_active()
110
+ }
111
+
112
+ if self.event_bus:
113
+ stats["eventbus"] = self.event_bus.get_stats()
114
+
115
+ if self.relay:
116
+ stats["relay"] = self.relay.get_stats()
117
+
118
+ return stats
119
+
120
+
121
+ def integrate_with_server(server_instance, port: Optional[int] = None) -> EventBusIntegration:
122
+ """Helper function to integrate EventBus with a Socket.IO server.
123
+
124
+ Args:
125
+ server_instance: Socket.IO server instance
126
+ port: Optional server port
127
+
128
+ Returns:
129
+ EventBusIntegration: The integration instance
130
+ """
131
+ integration = EventBusIntegration(server_instance)
132
+ integration.setup(port or getattr(server_instance, 'port', 8765))
133
+ return integration
134
+
135
+
136
+ # Monkey-patch helper for existing server
137
+ def patch_socketio_server(server_class):
138
+ """Monkey-patch an existing Socket.IO server class to add EventBus.
139
+
140
+ WHY monkey-patching:
141
+ - Allows integration without modifying existing code
142
+ - Can be applied selectively based on configuration
143
+ - Easy to remove or disable
144
+
145
+ Args:
146
+ server_class: The server class to patch
147
+ """
148
+ original_init = server_class.__init__
149
+ original_start = getattr(server_class, 'start_sync', None) or getattr(server_class, 'start', None)
150
+ original_stop = getattr(server_class, 'stop_sync', None) or getattr(server_class, 'stop', None)
151
+
152
+ def patched_init(self, *args, **kwargs):
153
+ """Patched __init__ that adds EventBus integration."""
154
+ original_init(self, *args, **kwargs)
155
+ self._eventbus_integration = EventBusIntegration(self)
156
+
157
+ def patched_start(self, *args, **kwargs):
158
+ """Patched start method that sets up EventBus."""
159
+ # Call original start
160
+ if original_start:
161
+ result = original_start(self, *args, **kwargs)
162
+ else:
163
+ result = None
164
+
165
+ # Setup EventBus integration
166
+ if hasattr(self, '_eventbus_integration'):
167
+ port = getattr(self, 'port', 8765)
168
+ self._eventbus_integration.setup(port)
169
+
170
+ return result
171
+
172
+ def patched_stop(self, *args, **kwargs):
173
+ """Patched stop method that tears down EventBus."""
174
+ # Teardown EventBus first
175
+ if hasattr(self, '_eventbus_integration'):
176
+ self._eventbus_integration.teardown()
177
+
178
+ # Call original stop
179
+ if original_stop:
180
+ return original_stop(self, *args, **kwargs)
181
+
182
+ # Apply patches
183
+ server_class.__init__ = patched_init
184
+ if original_start:
185
+ setattr(server_class, 'start_sync' if hasattr(server_class, 'start_sync') else 'start', patched_start)
186
+ if original_stop:
187
+ setattr(server_class, 'stop_sync' if hasattr(server_class, 'stop_sync') else 'stop', patched_stop)
188
+
189
+ logger.info(f"Patched {server_class.__name__} with EventBus integration")
@@ -43,6 +43,7 @@ from ...exceptions import SocketIOServerError as MPMConnectionError
43
43
  from ..handlers import EventHandlerRegistry, FileEventHandler, GitEventHandler
44
44
  from .broadcaster import SocketIOEventBroadcaster
45
45
  from .core import SocketIOServerCore
46
+ from .eventbus_integration import EventBusIntegration
46
47
 
47
48
 
48
49
  class SocketIOServer(SocketIOServiceInterface):
@@ -93,6 +94,9 @@ class SocketIOServer(SocketIOServiceInterface):
93
94
 
94
95
  # Active session tracking for heartbeat
95
96
  self.active_sessions: Dict[str, Dict[str, Any]] = {}
97
+
98
+ # EventBus integration
99
+ self.eventbus_integration = None
96
100
 
97
101
  def start_sync(self):
98
102
  """Start the Socket.IO server in a background thread (synchronous version)."""
@@ -144,6 +148,19 @@ class SocketIOServer(SocketIOServiceInterface):
144
148
 
145
149
  # Register events
146
150
  self._register_events()
151
+
152
+ # Setup EventBus integration
153
+ # WHY: This connects the EventBus to the Socket.IO server, allowing
154
+ # events from other parts of the system to be broadcast to dashboard
155
+ try:
156
+ self.eventbus_integration = EventBusIntegration(self)
157
+ if self.eventbus_integration.setup(self.port):
158
+ self.logger.info("EventBus integration setup successful")
159
+ else:
160
+ self.logger.warning("EventBus integration setup failed or disabled")
161
+ except Exception as e:
162
+ self.logger.error(f"Failed to setup EventBus integration: {e}")
163
+ self.eventbus_integration = None
147
164
 
148
165
  # Update running state
149
166
  self.running = self.core.running
@@ -159,6 +176,14 @@ class SocketIOServer(SocketIOServiceInterface):
159
176
  if self.broadcaster:
160
177
  self.broadcaster.stop_retry_processor()
161
178
 
179
+ # Teardown EventBus integration
180
+ if self.eventbus_integration:
181
+ try:
182
+ self.eventbus_integration.teardown()
183
+ self.logger.info("EventBus integration teardown complete")
184
+ except Exception as e:
185
+ self.logger.error(f"Error during EventBus teardown: {e}")
186
+
162
187
  # Stop health monitoring in connection handler
163
188
  if self.event_registry:
164
189
  from ..handlers import ConnectionEventHandler
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.0.34
3
+ Version: 4.1.1
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -54,6 +54,11 @@ Requires-Dist: pytest-asyncio; extra == "dev"
54
54
  Requires-Dist: pytest-cov; extra == "dev"
55
55
  Requires-Dist: black; extra == "dev"
56
56
  Requires-Dist: flake8; extra == "dev"
57
+ Requires-Dist: flake8-import-order; extra == "dev"
58
+ Requires-Dist: flake8-tidy-imports; extra == "dev"
59
+ Requires-Dist: flake8-bugbear; extra == "dev"
60
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
61
+ Requires-Dist: pylint>=3.0.0; extra == "dev"
57
62
  Requires-Dist: pre-commit; extra == "dev"
58
63
  Requires-Dist: mypy>=1.0.0; extra == "dev"
59
64
  Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
@@ -133,6 +138,13 @@ A powerful orchestration framework for Claude Code that enables multi-agent work
133
138
  pip install claude-mpm
134
139
  ```
135
140
 
141
+ Or with pipx (recommended for isolated installation):
142
+ ```bash
143
+ pipx install claude-mpm
144
+ # Configure MCP for pipx users:
145
+ claude-mpm mcp-pipx-config
146
+ ```
147
+
136
148
  **That's it!** See [QUICKSTART.md](QUICKSTART.md) for immediate usage or [docs/user/installation.md](docs/user/installation.md) for advanced options.
137
149
 
138
150
  ## Quick Usage
@@ -157,15 +169,17 @@ claude-mpm cleanup-memory
157
169
  See [QUICKSTART.md](QUICKSTART.md) for complete usage examples.
158
170
 
159
171
 
160
- ## Architecture (v3.8.2+)
172
+ ## Architecture (v4.1.0+)
161
173
 
162
- Following the TSK-0053 refactoring, Claude MPM features:
174
+ Following continuous improvements through v4.1.0, Claude MPM features:
163
175
 
164
- - **Service-Oriented Architecture**: Five specialized service domains
176
+ - **Service-Oriented Architecture**: Five specialized service domains with Socket.IO stability improvements
165
177
  - **Interface-Based Contracts**: All services implement explicit interfaces
166
178
  - **Dependency Injection**: Service container with automatic resolution
167
179
  - **50-80% Performance Improvement**: Through lazy loading and intelligent caching
168
180
  - **Enhanced Security**: Comprehensive input validation and sanitization framework
181
+ - **Improved Monitoring**: Enhanced dashboard with hierarchical agent display
182
+ - **Socket.IO Stability**: Major reliability improvements for real-time communication
169
183
 
170
184
  See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for detailed architecture information.
171
185
 
@@ -254,11 +268,15 @@ See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md]
254
268
  ### API Documentation
255
269
  Comprehensive API documentation is available at [docs/api/](docs/api/) - build with `make html` in that directory.
256
270
 
257
- ## Recent Updates (v3.8.2)
271
+ ## Recent Updates (v4.1.0)
272
+
273
+ **Socket.IO Stability Improvements**: Major reliability enhancements for real-time communication with improved error handling and connection management.
274
+
275
+ **Project Organization**: Comprehensive cleanup and reorganization with structured script directories for better maintainability.
258
276
 
259
- **Major Architecture Refactoring (TSK-0053)**: Complete service-oriented redesign with 50-80% performance improvements, enhanced security, and interface-based design.
277
+ **Documentation Consolidation**: Streamlined documentation structure with consolidated guides and improved navigation.
260
278
 
261
- **Process Management Improvements**: Enhanced hook system reliability with automatic process cleanup, timeout protection, and orphan process monitoring to prevent resource leaks.
279
+ **Agent Hierarchy Display**: Enhanced dashboard with hierarchical agent display showing PM at top level with visual distinction for implied vs explicit nodes.
262
280
 
263
281
  See [CHANGELOG.md](CHANGELOG.md) for full history and [docs/MIGRATION.md](docs/MIGRATION.md) for upgrade instructions.
264
282
 
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=rx_IoyFtBPn9oVb8revon7__fGHhEuqj96OnLQO6BVA,4
2
- claude_mpm/VERSION,sha256=SDtASzFBkVRriIYjQ47PH6FTKDKaeexHVaFiRJqNUag,7
2
+ claude_mpm/VERSION,sha256=lzeRX85ek06jSGWPzLgqTFMhV9IWG7AyokDCg3uPZss,6
3
3
  claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
4
4
  claude_mpm/__main__.py,sha256=_kaecmtouDenx_-wueUULnTxu8LirJEerzXIHiKMgew,723
5
5
  claude_mpm/constants.py,sha256=zwu1-qg-FAWyViUIKiTvYHGtgz6ABLDDrhmLiMMhOyc,5677
@@ -7,10 +7,10 @@ claude_mpm/init.py,sha256=n2W1sBtGUOod2XSMbiYZsqucvQUMuxf0ZudzeQjFv7E,15209
7
7
  claude_mpm/ticket_wrapper.py,sha256=qe5xY579t7_7fK5nyeAfHN_fr7CXdeOD3jfXEc8-7yo,828
8
8
  claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=r3EZA186PH7IAPaHsLc3aF3WmB5nwkz207lbAOVwRTA,5965
9
9
  claude_mpm/agents/BASE_PM.md,sha256=SxItl7GEYhrp-rTXi3todB-vcMCpiBchfzieBlFI0w8,8479
10
- claude_mpm/agents/INSTRUCTIONS.md,sha256=AvpRqSJZiFhZDKx2bJVvYgeG4gdUDRgO8sqNJNnoHjI,13917
10
+ claude_mpm/agents/INSTRUCTIONS.md,sha256=t_oRmnihXVR_YkvkFJTpTKfsXlNckFcSnW1gb_XWwzQ,16443
11
11
  claude_mpm/agents/MEMORY.md,sha256=zzwq4ytOrRaj64iq1q7brC6WOCQ4PDDC75TTRT8QudA,3493
12
- claude_mpm/agents/OUTPUT_STYLE.md,sha256=iX1vX81PnCq8N92v95hWbvaUfg3JZ2qpGJYfCG97r0c,2854
13
- claude_mpm/agents/WORKFLOW.md,sha256=pZPdOzmu4jEredvA4MC_rcEoW4zo5kvOT2174i0Pmzs,18527
12
+ claude_mpm/agents/OUTPUT_STYLE.md,sha256=HZ5GhiTwMWj9G_uefmMguH4Ukhs2CQqa8u5FQ6HBrbo,2538
13
+ claude_mpm/agents/WORKFLOW.md,sha256=97tH3eo3r0dWSSthcfpgzBX623R7fBX9ejZRb8Sdwsg,19074
14
14
  claude_mpm/agents/__init__.py,sha256=CPLqdKz9t_0gsSNdMSCZFw09jWQKSQ_piszPRFUyhKM,3220
15
15
  claude_mpm/agents/agent-template.yaml,sha256=mRlz5Yd0SmknTeoJWgFkZXzEF5T7OmGBJGs2-KPT93k,1969
16
16
  claude_mpm/agents/agent_loader.py,sha256=jLn2KBH_V7gm76MDiAnR1AKOCcp-DqcYJffaYhF9BRs,31786
@@ -42,8 +42,8 @@ claude_mpm/agents/templates/ticketing.json,sha256=3Wd-uHfuj2yxUwdygVH8KcrGhhNS0w
42
42
  claude_mpm/agents/templates/vercel_ops_agent.json,sha256=t_jjZeNThEYBJtntbSxR_grIr5nV_ktroJME_eXyx14,7926
43
43
  claude_mpm/agents/templates/vercel_ops_instructions.md,sha256=yDf5_2IEC22t6CqZaKCpbk1PIccHt3BbbnQ6IbAay38,15500
44
44
  claude_mpm/agents/templates/version_control.json,sha256=I_BudE8mEMWUwKYdkh36B-VraJwY7WLmOvgVTUJI3i0,13910
45
- claude_mpm/agents/templates/web_qa.json,sha256=HPShgnMvhzxJ6XX6NO4-XqGlG3B1gZLJg2egzZTYoPA,17813
46
- claude_mpm/agents/templates/web_ui.json,sha256=HD6BfYyX70UKVz076vw7YXOOXWkYX1ruD6NbgpysGgs,25734
45
+ claude_mpm/agents/templates/web_qa.json,sha256=eLXCN_7Nq5C-IaRFANIolf7KRtmfn_rkCr1O9AVaYi0,30626
46
+ claude_mpm/agents/templates/web_ui.json,sha256=O0zjrFOsR8P_gQJrNFMi7aIEaISLnt7tNn3KxwsIxbM,34906
47
47
  claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json,sha256=lLso4RHXVTQmX4A1XwF84kT59zZDblPO1xCgBj4S4x8,5060
48
48
  claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json,sha256=snfJW2yW9aMv9ldCSIWW7zwnyoQRx5u7xLMkNlfus9I,2258
49
49
  claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json,sha256=21o8TGCM9TO6eocSV9Ev5MmCq-xYwwCqMU7KQESaY2Q,8479
@@ -54,17 +54,18 @@ claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=o4
54
54
  claude_mpm/agents/templates/backup/research_memory_efficient.json,sha256=WlPnKlojeiCBZ4H75nWexLl_dHU5cSORIqLCDp4tCMM,8419
55
55
  claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5YuD-27CxKSOsRLv0bDY_tCZyds0yGbeizLb8paeFY,2322
56
56
  claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
57
- claude_mpm/cli/__init__.py,sha256=O_n97ChJJF10up_oD2OcxscfwX-rsoSaMbOYZ7ryo1w,14006
57
+ claude_mpm/cli/__init__.py,sha256=E_VkjcnRADx4Ho1kkanvm4Rhizs4prepumZUSV6gfiE,15761
58
58
  claude_mpm/cli/__main__.py,sha256=si_4WQX3adES4XRQJt-Jb0f7tWOZq0I-A7eO14hrMc4,847
59
59
  claude_mpm/cli/parser.py,sha256=Kv2d4JJMVIag1Q_YJimJdjzrnEN_jetKW-hGuEW67Uo,1438
60
- claude_mpm/cli/startup_logging.py,sha256=hdfLrbbwiqrBvO35ldS3xyOu2U34B3mnRXUbPHe0cTI,16516
60
+ claude_mpm/cli/startup_logging.py,sha256=uS3M7RsJCWgkJAULgFHsw0Dth7EKnvaX8X4ci6zEtPY,19630
61
61
  claude_mpm/cli/ticket_cli.py,sha256=Cco0riIeo-PuzBslX3-5LAtLUcsLvexSRtVlheb7-cQ,916
62
62
  claude_mpm/cli/utils.py,sha256=uhTQ4TG8TulEOl93PKFNmkhheWynNIPmadD-p4FhytQ,7091
63
63
  claude_mpm/cli/commands/__init__.py,sha256=I79gBlcKNuhNaTA_k5RT5UXhtk2t585jVuMNEokHJ0M,981
64
64
  claude_mpm/cli/commands/agent_manager.py,sha256=3B4RRr-ncyCTytUJ3Oh84DLcfquHokdVuUJLT-YOG6Y,20706
65
- claude_mpm/cli/commands/agents.py,sha256=cen3JgE86dupgYvH76SNe4dyoljTPVa8GwVGNJgf9w0,48641
65
+ claude_mpm/cli/commands/agents.py,sha256=GwvYkVgh5A1XHlyH8EfZQ0yrrCh62nwSoNLd10H0cOw,52364
66
66
  claude_mpm/cli/commands/aggregate.py,sha256=3-qFHY5-QkvuG06TDhADwesMfYcP9w7XdtroLAuZ9e4,18107
67
67
  claude_mpm/cli/commands/cleanup.py,sha256=HpM8f2Ub0z3Tm40BtpZ97k9RJ0bp8cT0_EgcaFRPqz8,19701
68
+ claude_mpm/cli/commands/cleanup_orphaned_agents.py,sha256=RxDVWYhBPA5pM3JFn3HYgQU5ll5CaYSTqrXXY640AF8,4593
68
69
  claude_mpm/cli/commands/config.py,sha256=uz4QHpV3owh5baM2KAny8BOIiy6rY00qoD-NSjoggdo,18269
69
70
  claude_mpm/cli/commands/doctor.py,sha256=YdOjuuxoJ_hbkSiuLK5G-LucGXagQlV0ZQOxPoiEGN4,5953
70
71
  claude_mpm/cli/commands/info.py,sha256=UgPBS7WCrie4fNnGDU_ahVBtNlgHpG--9hnF0iut4do,7207
@@ -72,6 +73,7 @@ claude_mpm/cli/commands/mcp.py,sha256=DHXtfW0SBpNTKkTBwbJ_nXailNjXTJOXnYcC52WXsl
72
73
  claude_mpm/cli/commands/mcp_command_router.py,sha256=ETpWpQhzOfd_UBGTjFuTAECCeIYya_rzfE46QVlFmqQ,5652
73
74
  claude_mpm/cli/commands/mcp_config_commands.py,sha256=TnTg7-erE5Z6O8C84o4lZITco72Wnu0FVlVF8tNVsP0,695
74
75
  claude_mpm/cli/commands/mcp_install_commands.py,sha256=6yCtESzYJERaevyYicpFHSoxBtX53sENsXS2MXBZkrE,10142
76
+ claude_mpm/cli/commands/mcp_pipx_config.py,sha256=gn3q1-Uz8M2u2DDfYJ77ipa1ejbBlGqWGxd2CAoT7XU,6033
75
77
  claude_mpm/cli/commands/mcp_server_commands.py,sha256=QIXD5HjGPihJKA1smxlSgrw-b87nIzbg9hAZmfwXYWw,6200
76
78
  claude_mpm/cli/commands/mcp_tool_commands.py,sha256=q17GzlFT3JiLTrDqwPO2tz1-fKmPO5QU449syTnKTz4,1283
77
79
  claude_mpm/cli/commands/memory.py,sha256=jFI4DuFqOe_Lyi0greevLcqOFRtqdL6gRu0RT49vqIY,51038
@@ -82,8 +84,8 @@ claude_mpm/cli/commands/socketio_monitor.py,sha256=3QnUrbd7l6wZyYKA3mGoT_AbenhSg
82
84
  claude_mpm/cli/commands/tickets.py,sha256=8rksywahSQIM81SuJtAVAyt9mBVlsyeBFWmaiWBNs6o,33869
83
85
  claude_mpm/cli/parsers/__init__.py,sha256=z6xJz7lumf54qkqv5hvDYr3P1ib_MqvoxSW8-gFz9Kg,1005
84
86
  claude_mpm/cli/parsers/agent_manager_parser.py,sha256=23QY2UHqogqFd-qLv_5RxFlugpQiIriDVa868CUXzLk,7219
85
- claude_mpm/cli/parsers/agents_parser.py,sha256=KK2XQjheedr2OpQ2vGfH1iOWHYLgGgpNZx0yU5un_Aw,4576
86
- claude_mpm/cli/parsers/base_parser.py,sha256=FCl8UGXMYfKQsf-9u_cDWKwrdKgkKY1734H8kRg07z0,11938
87
+ claude_mpm/cli/parsers/agents_parser.py,sha256=8QRPL0XiSTP-0Z5G8zRETX__LCEYNkrGaPW9nvOu6ow,5462
88
+ claude_mpm/cli/parsers/base_parser.py,sha256=oPDZE6QVQOKKZ19dnnvt1y_QuykX5V58wT5EOtjFWY0,12204
87
89
  claude_mpm/cli/parsers/config_parser.py,sha256=wp6NbV8_p9txP28MXFcQrri0JDIfGFM7u4aJbYJXcYQ,2699
88
90
  claude_mpm/cli/parsers/mcp_parser.py,sha256=JHtppgCJJsFcxbQjCVFugyTst82NQBiawE_GQhsMTWA,5993
89
91
  claude_mpm/cli/parsers/memory_parser.py,sha256=ZwCDxJEgp-w03L-1tZsWTgisiwamP42s424bA5bvDJc,4760
@@ -183,10 +185,10 @@ claude_mpm/dashboard/static/dist/components/ui-state-manager.js,sha256=PtZs6sxNh
183
185
  claude_mpm/dashboard/static/dist/components/working-directory.js,sha256=7V1pBeuxWOxZVlDp3kZvivTHAfzucv2ceBXWP6SlZTY,15339
184
186
  claude_mpm/dashboard/static/js/dashboard.js,sha256=bacYhLFaxQIVOeRaUZProQ0Px6CeZFZmgnwZoHjKWls,71535
185
187
  claude_mpm/dashboard/static/js/extension-error-handler.js,sha256=DZHrJ3gbfv4nsjmZpNMj-Sc3GKjVJ5ds8lgoaLRnq5I,6274
186
- claude_mpm/dashboard/static/js/socket-client.js,sha256=PU8i4f_ltSuhET-MmrWxPrY-ChOC46BCFoAy9rWvSRA,35774
188
+ claude_mpm/dashboard/static/js/socket-client.js,sha256=i19ZYpUqO38kXubk5NpuVXlSlz8UhorTEYYCJFxbcLM,35984
187
189
  claude_mpm/dashboard/static/js/components/agent-hierarchy.js,sha256=Xihxog_vJrk8VBEkDogV_wbye2GIFWmH71VQ1lETOHk,28243
188
190
  claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=RUVZ_fLOyDkHYjrROen_Pzzay79Bh29eXp_GRIPbIRg,37493
189
- claude_mpm/dashboard/static/js/components/build-tracker.js,sha256=WWUI3nn4nYEYVRl8dS1OP850nrQeLJ_iMRkz_bvBaGM,10097
191
+ claude_mpm/dashboard/static/js/components/build-tracker.js,sha256=IBfKpoSKWD5QMPN4tOZl-E84Q3QADYVsZ76ickrKW8E,11485
190
192
  claude_mpm/dashboard/static/js/components/event-processor.js,sha256=_GnAz8pxN1iyXw0O4AIR482QFyQAigEKO9IDUOUbGqc,24844
191
193
  claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=TST6uDa6NsW-VTUf1FhibLgmjNJoPz_QjyGakOdBrqA,40915
192
194
  claude_mpm/dashboard/static/js/components/export-manager.js,sha256=T1YtaR758FaB9aP_5V1xZC9EBIFQOG5H8f_sLopxR5A,11863
@@ -209,9 +211,9 @@ claude_mpm/hooks/memory_integration_hook.py,sha256=O9_2X0LECbmrgN42P_fEnZoaBkB6f
209
211
  claude_mpm/hooks/tool_call_interceptor.py,sha256=PI1bzMtSPy2X8lEjTjBXl0WJY-M-v1D-bxcwvUCGgzw,7452
210
212
  claude_mpm/hooks/validation_hooks.py,sha256=w3bSApxZE6hfLnBLVEs62DpJ6grxOr1-JZn1o6JFzc0,6447
211
213
  claude_mpm/hooks/claude_hooks/__init__.py,sha256=b4mud_g3S-3itHY_Dzpbb_SmdMEcJwtUU8fTcqpLqqs,130
212
- claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=NgwxJ1DauDag424izbe62tlzZHMh0IXolaTn_9I-6iU,6856
214
+ claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=eFARIVl_ZFyM1Xwrzx-3Qx2N8UZ2xajzY6T2Z2gn9Oo,7345
213
215
  claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=7C_iJXBcjsZnH3jdrF9wjsih7IZYff5A3RJly2WwXQQ,32930
214
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=UHn1DaOlK7UHdhnyafkoTEVIGoTsvAc8EXR8y-eX2hc,45814
216
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=amIPW5CRVVaT-uFjiC4VhTxXcMHGkfuCT39hIaVuWlg,41142
215
217
  claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py,sha256=t2O1l6Qk6_49BPBHEiRm-QExEFfBdCThQo0F6KgEMkA,14725
216
218
  claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=4lG3TlLVoVfTJipPj1X_ICUlS-KpnkbUp1U3oSq80Bw,2476
217
219
  claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=Cvn5eEcaZido5eTWhG-43lV2dNgknhGIE1oPrwCXd8A,8953
@@ -256,7 +258,7 @@ claude_mpm/services/agents/deployment/agent_config_provider.py,sha256=iH_N4Qi7gq
256
258
  claude_mpm/services/agents/deployment/agent_configuration_manager.py,sha256=VhwSYX1wYYnSQqfqmCpy9goPJ9f2eEA2_DFrdwtO7j4,12180
257
259
  claude_mpm/services/agents/deployment/agent_definition_factory.py,sha256=izcjZGLznts8khXD8wLViUbk_kPhnrqucLHFdfap_8c,2754
258
260
  claude_mpm/services/agents/deployment/agent_deployment.py,sha256=PeKiJBXuXGFb0-nuirY7tcLLePKaeKjx7J8qlgIRtHA,51405
259
- claude_mpm/services/agents/deployment/agent_discovery_service.py,sha256=0z1y1OXZUt2vJEmY0RCD0KSvSiG7KkpqT68wVVfNEDY,13438
261
+ claude_mpm/services/agents/deployment/agent_discovery_service.py,sha256=BrxFKPWq1q7DFROnPhn28ZI5taekj4LfSMyFz4qj88c,13530
260
262
  claude_mpm/services/agents/deployment/agent_environment_manager.py,sha256=Tx-fqnRmd-XV8goqUv3M6dtfthc98hrh7-Xcvs3QKYU,9936
261
263
  claude_mpm/services/agents/deployment/agent_filesystem_manager.py,sha256=dKDsweubspi-x0X97ah_Ffw1LRPWttD2JKtryrwhjhw,13004
262
264
  claude_mpm/services/agents/deployment/agent_format_converter.py,sha256=6PgY5nphC8zDBfxk4YNcAmFUFm56lEX8yUJwBxYj5Mc,15750
@@ -264,9 +266,9 @@ claude_mpm/services/agents/deployment/agent_frontmatter_validator.py,sha256=gro-
264
266
  claude_mpm/services/agents/deployment/agent_lifecycle_manager.py,sha256=y0p7KMEvIL291Vv1j8xjikQZcJyw1IhpInJEervA9XY,40214
265
267
  claude_mpm/services/agents/deployment/agent_metrics_collector.py,sha256=avJ8LJesSDaQrgKJzCyRDMMZl5AgHWHgk4a1gpIMWbY,10186
266
268
  claude_mpm/services/agents/deployment/agent_restore_handler.py,sha256=IR3g6-kVB75Ew47E7Wg6UA6-juq6caSXEnmrpkOlfVU,3129
267
- claude_mpm/services/agents/deployment/agent_template_builder.py,sha256=pp8UE7O_ShfVqwsVDGiK1deuFIOH8CclaK7ZKAhAKck,15801
269
+ claude_mpm/services/agents/deployment/agent_template_builder.py,sha256=dRxgvgtKIkgIlZYipDU51fEpmqgylPo0RRsh3Z5d5dA,15913
268
270
  claude_mpm/services/agents/deployment/agent_validator.py,sha256=ie7mYPEjYWeWgjpVyPludX1UAy5zBuYOWf-cXKVbKtM,12577
269
- claude_mpm/services/agents/deployment/agent_version_manager.py,sha256=QH6LWmgBfT0EIgvV1W6ihCl18833Hg3I24MEVfuTYnI,10839
271
+ claude_mpm/services/agents/deployment/agent_version_manager.py,sha256=tu_1b8hRDTIog8-mVY00sz0JcCLmQLx6yyZ8n22aOB4,10956
270
272
  claude_mpm/services/agents/deployment/agent_versioning.py,sha256=HVejWr4AAQq8wEP4wxAiCntG_PielWQPnVICmEfNQNs,1002
271
273
  claude_mpm/services/agents/deployment/agents_directory_resolver.py,sha256=iITRdP_bB564RS1FcDDzyePLxELIRjP3IR5qgrV7i1c,2217
272
274
  claude_mpm/services/agents/deployment/async_agent_deployment.py,sha256=1Ij6PDj3nVboSp7_6cN1YPk-8QcbvqeXrHfe96dnZMQ,28221
@@ -276,7 +278,7 @@ claude_mpm/services/agents/deployment/deployment_wrapper.py,sha256=kJmnUzavyrsfL
276
278
  claude_mpm/services/agents/deployment/interface_adapter.py,sha256=bZmO4vF8Dnt0Ea8SgpIMHXPs6kMubSBDA-rN6ZH8hGQ,8143
277
279
  claude_mpm/services/agents/deployment/lifecycle_health_checker.py,sha256=2dphAvYRABNlsvi3XfVwS8kvv-YURNEwPBVtCc1g3Zc,3164
278
280
  claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py,sha256=lK_yg0uRL55opUoecOJBL83Tjj6Pu_z4-4EYWPeN6tM,4336
279
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py,sha256=5Os2YGhdGSaOWB0zCa67tTMfZKd7ibA0ZZBon0eFsn4,31305
281
+ claude_mpm/services/agents/deployment/multi_source_deployment_service.py,sha256=jH3sT7wSzXOvKXbEJNw5b2L3veHt0fWip8DiDc0E4Yg,38943
280
282
  claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py,sha256=3EUb6rDe7FooDLM8TxMgefM0UE90MGhy0PmhKQXvTSA,11892
281
283
  claude_mpm/services/agents/deployment/system_instructions_deployer.py,sha256=SCBBXleIn322X_w-swOHjO22J3HCxSHGkd3V-rSbbOs,4060
282
284
  claude_mpm/services/agents/deployment/config/__init__.py,sha256=dpyC_WlQWlaOne9VVF0KXzoEO0Davt02bjfk1AJv2jk,397
@@ -355,8 +357,9 @@ claude_mpm/services/diagnostics/checks/mcp_check.py,sha256=GA_oxxyy6OTgt2GUeSdUB
355
357
  claude_mpm/services/diagnostics/checks/monitor_check.py,sha256=qMtloyc6wxjErJCFFe5FNvN6fjvEGWDVy3dWwQ1BXPE,10519
356
358
  claude_mpm/services/diagnostics/checks/startup_log_check.py,sha256=DZmJMQg6SjCLIZ3Knm4LmMCNPcNrtYfSFgnruxafuLI,12724
357
359
  claude_mpm/services/event_bus/__init__.py,sha256=PCVIbsvIwt0ZMoi3CMRhLwneSturJ_lJRMePglSOWFI,687
358
- claude_mpm/services/event_bus/event_bus.py,sha256=G0DMEwQZ13H5KfTLLGnF7jQbtYvB7mmo011R0FH6gNM,11255
359
- claude_mpm/services/event_bus/relay.py,sha256=m1kaDAdjfY-yyu9rW0qgPOOjfpHGTJDZxTIQECarpAw,9430
360
+ claude_mpm/services/event_bus/config.py,sha256=Z67FICZruPXFdRBsVXBakGX8LHJx_aJixOOOkv9iSgY,4868
361
+ claude_mpm/services/event_bus/event_bus.py,sha256=FfyEKDJe-AHtUC_21euXZSPvXutwgTzQFSjg--sCimI,12185
362
+ claude_mpm/services/event_bus/relay.py,sha256=pRd2tz91yc3PNImdtEAP54DmKzmcMsimtr8Ae2qqOI8,9259
360
363
  claude_mpm/services/events/__init__.py,sha256=v35MhdRDFDwsF2nwfIkHS1ii-7mC0OzRZ5MaTcBaOzo,1091
361
364
  claude_mpm/services/events/core.py,sha256=KJFERKyPOUG4GtkEBcX7BQuPYxjy3CJIG3ZDKf0MxIY,17016
362
365
  claude_mpm/services/events/interfaces.py,sha256=n5M8xS3y6e6iJ9bWk2R00LwkRKow8NZz48C5Ono3zZY,5958
@@ -393,6 +396,7 @@ claude_mpm/services/infrastructure/daemon_manager.py,sha256=ZfEmSSwyP7nYRfdpEl7G
393
396
  claude_mpm/services/infrastructure/logging.py,sha256=3bYMJi-qzpPNgs1-Epfp6EAuRm5iP-hypIluSpgy0Eg,6473
394
397
  claude_mpm/services/infrastructure/monitoring.py,sha256=NXF3Z2SWz42KdSBdlIN5ADGgyNY6DS_qCYKKg2YYS5E,35871
395
398
  claude_mpm/services/mcp_gateway/__init__.py,sha256=sZ8qtuIle4U9N4j3YZCTmikz1DMK68VvLPhhpvfNxiU,4503
399
+ claude_mpm/services/mcp_gateway/auto_configure.py,sha256=sckgmnIwsrUyr2bLNIRaYHCwygbDrzZXrCIZkRey-H8,12766
396
400
  claude_mpm/services/mcp_gateway/main.py,sha256=dkwXrSMNizJGUMUMmSD_rSHt696clJ7sOlNrzsry8ig,15753
397
401
  claude_mpm/services/mcp_gateway/config/__init__.py,sha256=noKmcSovlfAN8I50QMDZA5fLdBedLY58N2JkNNT-HFc,386
398
402
  claude_mpm/services/mcp_gateway/config/config_loader.py,sha256=M1ZpMlztByFd_p5qCmIkMAfrMCLyap9n1QTU-MInv9M,9523
@@ -442,7 +446,7 @@ claude_mpm/services/socketio/event_normalizer.py,sha256=v9kQ2NezUzWYcIAWBX1wnDeu
442
446
  claude_mpm/services/socketio/migration_utils.py,sha256=YxDlaS5xxDnC52ggWhRqo743MSMqFhlEgujAHMI1gzs,12168
443
447
  claude_mpm/services/socketio/handlers/__init__.py,sha256=-lTRs1zdzDEf_QhT5ajE1_Z27MxKaFC4CzFtWxjK5ss,789
444
448
  claude_mpm/services/socketio/handlers/base.py,sha256=YaidwKRhDNhntQvfGTMX0XVkwdNfbYASopRJ9sFLbcA,4858
445
- claude_mpm/services/socketio/handlers/connection.py,sha256=8-Sirt0V1UXCYyIxHFZgNklPI-QkNk9MfGfI_7ZA8H4,27138
449
+ claude_mpm/services/socketio/handlers/connection.py,sha256=NrmuxmEIEvLvQiydNQesa2wnNEWR0hAXCdslBHzkOWg,27222
446
450
  claude_mpm/services/socketio/handlers/file.py,sha256=xYrzaZCQLkNvWvt3Ebnd7w66eaMhTr5ClxAvFMFDEIg,8431
447
451
  claude_mpm/services/socketio/handlers/git.py,sha256=sVmPKDC5VQb5ukzFelgTYu52M-wZntnANNNxrTewhVY,37861
448
452
  claude_mpm/services/socketio/handlers/hook.py,sha256=1EETZ1G2lPqgzoEWwqzVb33zJajxet1ePH4AayE7TcA,8030
@@ -451,8 +455,9 @@ claude_mpm/services/socketio/handlers/project.py,sha256=_SbSRZ54IivtHWtfl4sKfbgR
451
455
  claude_mpm/services/socketio/handlers/registry.py,sha256=u1kKRdVWsT4XKoQVQrq5V5JWyUK0R-R5hQg4IB6UKVY,7794
452
456
  claude_mpm/services/socketio/server/__init__.py,sha256=a5SYqKHCER3ger9dv4_P-RmLtND6pHd-2VFSrP04Gqo,640
453
457
  claude_mpm/services/socketio/server/broadcaster.py,sha256=IUyScw2YSk_1jjIdD5DwF4gD50hXWG64c5nuM7SexSI,20533
454
- claude_mpm/services/socketio/server/core.py,sha256=EB3xl3xhPHvGEDouP_Vqn_j1e8w3AolXMW316C7O1AA,17479
455
- claude_mpm/services/socketio/server/main.py,sha256=3_2_j4kIHl2Xwz1Vq1rAlXYhV9OGWDTL4ekeCcbEWps,13501
458
+ claude_mpm/services/socketio/server/core.py,sha256=VHTKWG_fNZB6ciQ0djlcyfaFsDktOm6shP4UuwOEm-c,18724
459
+ claude_mpm/services/socketio/server/eventbus_integration.py,sha256=HmStNC2PqUjKKOYYlwL9wfC3aeysR80v3L3csTLyrhE,6226
460
+ claude_mpm/services/socketio/server/main.py,sha256=9hYMlxO1oOjZSjXugdZHyRB_FdhTHX-HPxCFHqIs9rs,14643
456
461
  claude_mpm/services/version_control/__init__.py,sha256=xj13GwrNw4t1KieGlmw62hj14HPj2BWP2Tlv-9E_tTE,1510
457
462
  claude_mpm/services/version_control/branch_strategy.py,sha256=XsmXwB98-zoTGKsM27fPS813tcKaJwgB7DWilgKKhio,23232
458
463
  claude_mpm/services/version_control/conflict_resolution.py,sha256=RM5cFxlEmvqS3SeCwMYAkhTu5UTIGlhI2Kgh2Yw7VO0,26381
@@ -481,9 +486,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=e74VlIPozCljZss_0SwLO3J1ZuIKRT9FrrFi
481
486
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
482
487
  claude_mpm/validation/agent_validator.py,sha256=szbK9d29v_T6xE_KvW845WLKXbS_yYpXQscrSrSeldI,20937
483
488
  claude_mpm/validation/frontmatter_validator.py,sha256=hFhKnSvlYuYT91lPDxX9V6ICm05MBJw85coZpkL1o1g,7033
484
- claude_mpm-4.0.34.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
485
- claude_mpm-4.0.34.dist-info/METADATA,sha256=9vCs3-BKoYdvytLJK6XxzPCb6mHt-IfX3egKg0U8mqw,12509
486
- claude_mpm-4.0.34.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
487
- claude_mpm-4.0.34.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
488
- claude_mpm-4.0.34.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
489
- claude_mpm-4.0.34.dist-info/RECORD,,
489
+ claude_mpm-4.1.1.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
490
+ claude_mpm-4.1.1.dist-info/METADATA,sha256=yd2lS4M3s-yVnaGmYuI2naYepk2M9p1XvCax8xzOvhs,13327
491
+ claude_mpm-4.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
492
+ claude_mpm-4.1.1.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
493
+ claude_mpm-4.1.1.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
494
+ claude_mpm-4.1.1.dist-info/RECORD,,