claude-mpm 4.0.9__py3-none-any.whl → 4.0.11__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.
@@ -119,6 +119,9 @@ class SocketIOServer(SocketIOServiceInterface):
119
119
 
120
120
  # Set the loop reference for broadcaster
121
121
  self.broadcaster.loop = self.core.loop
122
+
123
+ # Start the retry processor for resilient event delivery
124
+ self.broadcaster.start_retry_processor()
122
125
 
123
126
  # Register events
124
127
  self._register_events()
@@ -128,11 +131,22 @@ class SocketIOServer(SocketIOServiceInterface):
128
131
  self.stats["start_time"] = self.core.stats["start_time"]
129
132
 
130
133
  self.logger.info(
131
- f"SocketIO server started successfully on {self.host}:{self.port}"
134
+ f"SocketIO server started successfully on {self.host}:{self.port} with retry queue enabled"
132
135
  )
133
136
 
134
137
  def stop_sync(self):
135
138
  """Stop the Socket.IO server (synchronous version)."""
139
+ # Stop the retry processor if running
140
+ if self.broadcaster:
141
+ self.broadcaster.stop_retry_processor()
142
+
143
+ # Stop health monitoring in connection handler
144
+ if self.event_registry:
145
+ from ..handlers import ConnectionEventHandler
146
+ conn_handler = self.event_registry.get_handler(ConnectionEventHandler)
147
+ if conn_handler and hasattr(conn_handler, 'stop_health_monitoring'):
148
+ conn_handler.stop_health_monitoring()
149
+
136
150
  self.core.stop_sync()
137
151
  self.running = False
138
152
 
@@ -8,6 +8,7 @@ This service handles:
8
8
  Extracted from ClaudeRunner to follow Single Responsibility Principle.
9
9
  """
10
10
 
11
+ from pathlib import Path
11
12
  from typing import Any, Dict, Optional
12
13
 
13
14
  from claude_mpm.config.paths import paths
@@ -122,17 +123,23 @@ class VersionService(BaseService, VersionServiceInterface):
122
123
  Returns:
123
124
  Build number as integer or None if not available
124
125
  """
125
- try:
126
- build_file = paths.project_root / "BUILD_NUMBER"
127
- if build_file.exists():
128
- build_content = build_file.read_text().strip()
129
- build_number = int(build_content)
130
- self.logger.debug(f"Build number obtained from file: {build_number}")
131
- return build_number
132
- except (ValueError, IOError) as e:
133
- self.logger.debug(f"Could not read BUILD_NUMBER: {e}")
134
- except Exception as e:
135
- self.logger.debug(f"Unexpected error reading BUILD_NUMBER: {e}")
126
+ # Try multiple locations for BUILD_NUMBER file
127
+ build_file_locations = [
128
+ paths.project_root / "BUILD_NUMBER", # Development location
129
+ Path(__file__).parent.parent / "BUILD_NUMBER", # Package location
130
+ ]
131
+
132
+ for build_file in build_file_locations:
133
+ try:
134
+ if build_file.exists():
135
+ build_content = build_file.read_text().strip()
136
+ build_number = int(build_content)
137
+ self.logger.debug(f"Build number obtained from {build_file}: {build_number}")
138
+ return build_number
139
+ except (ValueError, IOError) as e:
140
+ self.logger.debug(f"Could not read BUILD_NUMBER from {build_file}: {e}")
141
+ except Exception as e:
142
+ self.logger.debug(f"Unexpected error reading BUILD_NUMBER from {build_file}: {e}")
136
143
 
137
144
  return None
138
145
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.0.9
3
+ Version: 4.0.11
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
@@ -1,4 +1,5 @@
1
- claude_mpm/VERSION,sha256=NlyEVzfcERhhF26h0CRs57M1do2NvSzqI0wwWymDvro,6
1
+ claude_mpm/BUILD_NUMBER,sha256=ra2KPUYLh7RotFiDIuCPImXsbEcwnA847UFNgGToN-0,4
2
+ claude_mpm/VERSION,sha256=Xm0N5pw0LsSAcOK92caP5MeunVmgHR49Xdv_Ai2jKCg,7
2
3
  claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
3
4
  claude_mpm/__main__.py,sha256=Lfi2z17WSKiMrTAhA0LNsdLJRiV-J2dAezXPt0R9Qis,643
4
5
  claude_mpm/constants.py,sha256=cwfhDsstU5KK7esKnoq0PtSUg7LjneujdHjR-o5dX00,5597
@@ -101,11 +102,11 @@ claude_mpm/core/constants.py,sha256=6e_IMQMOeW3oMgUsLFGvbqzM8Sf4fDYMpn3rGpfWVhM,
101
102
  claude_mpm/core/container.py,sha256=SERH3YOH9BXtHbv-kWu0bViNpdcGccDXR0NXFXbw1Pc,32155
102
103
  claude_mpm/core/exceptions.py,sha256=lNVLqVuRjygHe89NJg1rPAyevVdzpLOKgHFMQtGSxdA,19654
103
104
  claude_mpm/core/factories.py,sha256=A7WcjYWjhkc-tzUnef0YaW0Jj8oxMP-7_g2jIj1XYa8,7265
104
- claude_mpm/core/framework_loader.py,sha256=wRIkE7FeawWrvM3VF7uY1jJGRBalnuHZ4-PUayAhKD8,40727
105
+ claude_mpm/core/framework_loader.py,sha256=E_l5hrqwrGvAWCE-CHwjqAQErjxdzwgJ7AY31au5Hhk,42122
105
106
  claude_mpm/core/hook_manager.py,sha256=N-54QwNsyrUZSrH533HAo6hlJKPFbgMeDirg92H8en8,11014
106
107
  claude_mpm/core/hook_performance_config.py,sha256=Cqf-89mjiLlFJ-v4PhxfzsaOVovYYQa5pa-RMm42Ki8,5748
107
108
  claude_mpm/core/injectable_service.py,sha256=HXuviYX-h0sNxOFzgZiYjf-gLDUnQIeG-0-KuWdfCzk,7397
108
- claude_mpm/core/interactive_session.py,sha256=sYe2Fob6HxyTYWdvWn0rpCDYlwSmpB1_PUgjb2DXLC4,18998
109
+ claude_mpm/core/interactive_session.py,sha256=bYrQDEYUvKAoQEEU8CVBlqE2nkDhLqJQCijbGJQnHxw,19002
109
110
  claude_mpm/core/interfaces.py,sha256=unClq54EgOIamVICS0G_LJzUa4gLXixqfDxiAvNjEkk,26914
110
111
  claude_mpm/core/lazy.py,sha256=to0DBciTUnWL9UO8o5bCVSgFCRHE1VtSrgX_B8qYg0Y,14724
111
112
  claude_mpm/core/logger.py,sha256=lzwREb0SBEXL-IkCRnJHK_GKuRaegNOx4CJltfAsNAE,15774
@@ -161,7 +162,7 @@ claude_mpm/dashboard/static/dist/components/ui-state-manager.js,sha256=PtZs6sxNh
161
162
  claude_mpm/dashboard/static/dist/components/working-directory.js,sha256=7V1pBeuxWOxZVlDp3kZvivTHAfzucv2ceBXWP6SlZTY,15339
162
163
  claude_mpm/dashboard/static/js/dashboard.js,sha256=4u-oV6k_AUj8PneNXbCoDnYiGG2y6e6eHr5JIisfTXg,60178
163
164
  claude_mpm/dashboard/static/js/extension-error-handler.js,sha256=DZHrJ3gbfv4nsjmZpNMj-Sc3GKjVJ5ds8lgoaLRnq5I,6274
164
- claude_mpm/dashboard/static/js/socket-client.js,sha256=PGqEgj_obpKHwPNMQB8K1glQUOL3RIfjADRxpLPCpwQ,22738
165
+ claude_mpm/dashboard/static/js/socket-client.js,sha256=miNfAKfJr5z4br5eOpZMVoKLS5LBYO0Rp2q6I0xroW4,32437
165
166
  claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=BDqgr1o0DlcgzNa5KwDsNODelQvXA-tab0O1PeAnVtM,27269
166
167
  claude_mpm/dashboard/static/js/components/event-processor.js,sha256=_GnAz8pxN1iyXw0O4AIR482QFyQAigEKO9IDUOUbGqc,24844
167
168
  claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=aHF__HZHZsfSkpELb4GAIGxNrFGAiBcizrWW00bTG9c,33105
@@ -187,8 +188,8 @@ claude_mpm/hooks/validation_hooks.py,sha256=w3bSApxZE6hfLnBLVEs62DpJ6grxOr1-JZn1
187
188
  claude_mpm/hooks/claude_hooks/__init__.py,sha256=b4mud_g3S-3itHY_Dzpbb_SmdMEcJwtUU8fTcqpLqqs,130
188
189
  claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=8bluFsgiM6HUJuNw-Dl7RkuzLR1vVMWGdEwucp9r3gc,6508
189
190
  claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=rLaKV_pV8NOCwbJQtg7At0xYNfYcCDiajSge7TiiuPk,30081
190
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=Q4IDqEh9hsFNxsGuEkmCVhRuA2OKhBQ5X5vuLF_Ryuc,38549
191
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=R0Gt-5Rt5_889PH57d8iXfOp38N5sv7SaF_QolYbTXw,2359
191
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=quEOyJ6pKwxPdzoFt9RaFHa9u88nNdLN7mvg6_a-5F0,38649
192
+ claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=xcNT3yIx9srBSd_9aosBp9w45JwaZHDlsp5ocio9cM8,2405
192
193
  claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=fxkawPwMkMCGxJ5Ki_PJ7blN1vtQXEYqGxxQPJytOq4,8801
193
194
  claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=Cm5uyWgMLC5HZF0FA0xhP7bhQ1vC1H3Cak8wfzzW5MU,13887
194
195
  claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=z75UOImtbECItB0pleRUSeNXqjh0jk3dMWq6eekPQw8,7981
@@ -219,7 +220,7 @@ claude_mpm/services/subprocess_launcher_service.py,sha256=ZfMPJ2TvHP3SIho5wtCiBC
219
220
  claude_mpm/services/system_instructions_service.py,sha256=OVrTABcN99Hb7hcr95UEObUyLj45CVj_-aTvDsfioLY,10058
220
221
  claude_mpm/services/ticket_manager.py,sha256=SJCaVqDnsv-ZyjBZ38zwR-GhoCMTXhr0HF7fJjP7dYo,606
221
222
  claude_mpm/services/utility_service.py,sha256=zAt1EaTXfsyXymRD6UTuFFAM6kZORkdGaKFV0jhBGlI,8465
222
- claude_mpm/services/version_service.py,sha256=ys_ZTY_VAUEpzUhuOUz6Yg9V6f9COZSqqmttflRS9kc,9812
223
+ claude_mpm/services/version_service.py,sha256=MG88cKmDQTcxVKXB_X0dI1CNNvXYZoxACfJii2cMlVE,10159
223
224
  claude_mpm/services/agents/__init__.py,sha256=ExaFbDQt4cf1bpLvrVHkZA-ev8chEBeZPI35AQRGh_E,2175
224
225
  claude_mpm/services/agents/deployment/__init__.py,sha256=d9l1uaf-G7v_mCxcz8OUQMFtgG8-JZviqXacOOlaU4g,539
225
226
  claude_mpm/services/agents/deployment/agent_config_provider.py,sha256=iH_N4Qi7gq_Pc4OYqsnaaX5KPVMlJ2dYkQS_PEVmLtY,13312
@@ -291,7 +292,7 @@ claude_mpm/services/agents/management/__init__.py,sha256=dZcFI9EBajH2KbCoNQWAFQ0
291
292
  claude_mpm/services/agents/management/agent_capabilities_generator.py,sha256=2j5yoyCXhsK41Bpr8gDAS6jXKhTI_lyYPkTa2djPls4,7002
292
293
  claude_mpm/services/agents/management/agent_management_service.py,sha256=ek8qGMHqyAb2kks4GG0GpS123dl-zyhRas9pnn6fUy8,23027
293
294
  claude_mpm/services/agents/memory/__init__.py,sha256=AcO-bZajiUBjnp1UNNMJyKFR3F2CDTgn5b0NEjN9Oiw,667
294
- claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=YRjvzHtvp_HZy8UubRuO4gxQw29y1fZk4xzjOhQt1XQ,23920
295
+ claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=ITLrLTTvJcw5XOrHQOYhNgQsuqax6XsiTeSEv3zBi6M,23914
295
296
  claude_mpm/services/agents/memory/agent_persistence_service.py,sha256=mx67hEZtpMG-fom_qUvOL0U8HSWam1F55LJj4g4k3nw,2783
296
297
  claude_mpm/services/agents/memory/analyzer.py,sha256=dDpOquis1OjaHKr5IlHS125BpCFjxh8hng6kN-6eHFw,16973
297
298
  claude_mpm/services/agents/memory/content_manager.py,sha256=LifCY4VLFtWxwOPd8pKXWCTo2_p6xlGbHocSS9s6THo,13103
@@ -370,7 +371,7 @@ claude_mpm/services/socketio/__init__.py,sha256=FJ2BYTa1i_E9FUdjEuJ1FV1Joq9I5rNx
370
371
  claude_mpm/services/socketio/client_proxy.py,sha256=ISLDS0fXOi2a4txcZ9KTEk2Ywu4wrG08CmdYUlIezvU,6654
371
372
  claude_mpm/services/socketio/handlers/__init__.py,sha256=-lTRs1zdzDEf_QhT5ajE1_Z27MxKaFC4CzFtWxjK5ss,789
372
373
  claude_mpm/services/socketio/handlers/base.py,sha256=YaidwKRhDNhntQvfGTMX0XVkwdNfbYASopRJ9sFLbcA,4858
373
- claude_mpm/services/socketio/handlers/connection.py,sha256=l86hmJNUhLwYp01n-SaZ1meY1S0fT4iJEtK_0wH014w,12942
374
+ claude_mpm/services/socketio/handlers/connection.py,sha256=6GCG_wWbxQrKYp1nNPhO2AGZzP5yYW5RtYPfUv_nB7E,24646
374
375
  claude_mpm/services/socketio/handlers/file.py,sha256=xYrzaZCQLkNvWvt3Ebnd7w66eaMhTr5ClxAvFMFDEIg,8431
375
376
  claude_mpm/services/socketio/handlers/git.py,sha256=sVmPKDC5VQb5ukzFelgTYu52M-wZntnANNNxrTewhVY,37861
376
377
  claude_mpm/services/socketio/handlers/hook.py,sha256=HrrcnRu7FfbbOFwLRTBxZEtXhVBBJatJlSTMvhhqiso,7658
@@ -378,9 +379,9 @@ claude_mpm/services/socketio/handlers/memory.py,sha256=0RltTwhXPhBZEpqSYFoXmVuSJ
378
379
  claude_mpm/services/socketio/handlers/project.py,sha256=_SbSRZ54IivtHWtfl4sKfbgRQL6sKaqVM5Rsxvql5JQ,789
379
380
  claude_mpm/services/socketio/handlers/registry.py,sha256=LiPfkRLGj0LLicWapRTnDzoqpPLr8UeE_TrXhZONqaU,6002
380
381
  claude_mpm/services/socketio/server/__init__.py,sha256=a5SYqKHCER3ger9dv4_P-RmLtND6pHd-2VFSrP04Gqo,640
381
- claude_mpm/services/socketio/server/broadcaster.py,sha256=IcFqD7A5Pv2WspG7-XfcEHUSxH48aUFwDa62xGd6r0E,9471
382
+ claude_mpm/services/socketio/server/broadcaster.py,sha256=xRlEQBtIHxgnE2x7t0WN9PlPDaThudS-5FcZl2rFOc4,19063
382
383
  claude_mpm/services/socketio/server/core.py,sha256=mvIIV80WLOPWhs16JM17nA9Nwoo9j8anBc-sjaalp4c,14433
383
- claude_mpm/services/socketio/server/main.py,sha256=OXzkSfJ7xraQbLLGWH2_nWE_sTX9TPTObZMDW-fiLPs,11998
384
+ claude_mpm/services/socketio/server/main.py,sha256=74tMkSW0kC3kgJjYhW89kjiwfYT6liIuUg78PbmH08M,12654
384
385
  claude_mpm/services/version_control/__init__.py,sha256=xj13GwrNw4t1KieGlmw62hj14HPj2BWP2Tlv-9E_tTE,1510
385
386
  claude_mpm/services/version_control/branch_strategy.py,sha256=XsmXwB98-zoTGKsM27fPS813tcKaJwgB7DWilgKKhio,23232
386
387
  claude_mpm/services/version_control/conflict_resolution.py,sha256=RM5cFxlEmvqS3SeCwMYAkhTu5UTIGlhI2Kgh2Yw7VO0,26381
@@ -409,9 +410,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=e74VlIPozCljZss_0SwLO3J1ZuIKRT9FrrFi
409
410
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
410
411
  claude_mpm/validation/agent_validator.py,sha256=szbK9d29v_T6xE_KvW845WLKXbS_yYpXQscrSrSeldI,20937
411
412
  claude_mpm/validation/frontmatter_validator.py,sha256=Q_aTyjigfKZQG7eSwLtwMfd0h_eyS9FQAm59ZFf5VYA,7036
412
- claude_mpm-4.0.9.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
413
- claude_mpm-4.0.9.dist-info/METADATA,sha256=yfwG_dB9JY1ZhH2T0SMGfWDG9wmey7GzDVmasVV-W9Q,11818
414
- claude_mpm-4.0.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
415
- claude_mpm-4.0.9.dist-info/entry_points.txt,sha256=uafLVeHm4AXrzvdR77fXO3a2MmvvfGtmVU2iY8uIPt8,403
416
- claude_mpm-4.0.9.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
417
- claude_mpm-4.0.9.dist-info/RECORD,,
413
+ claude_mpm-4.0.11.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
414
+ claude_mpm-4.0.11.dist-info/METADATA,sha256=cgnjym6qmxFMd0WUk4-n3OLlkkGGnzOk3ec6NJ1--cE,11819
415
+ claude_mpm-4.0.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
416
+ claude_mpm-4.0.11.dist-info/entry_points.txt,sha256=uafLVeHm4AXrzvdR77fXO3a2MmvvfGtmVU2iY8uIPt8,403
417
+ claude_mpm-4.0.11.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
418
+ claude_mpm-4.0.11.dist-info/RECORD,,