claude-mpm 3.4.9__py3-none-any.whl → 3.4.13__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.
@@ -580,18 +580,18 @@ def _start_standalone_socketio_server(port, logger):
580
580
  logger.error(f"Failed to start Socket.IO daemon: {result.stderr}")
581
581
  return False
582
582
 
583
- # Wait for server to be ready with longer timeouts and progressive delays
584
- # WHY: Socket.IO server startup involves complex async initialization:
583
+ # Wait for server to be ready with reasonable timeouts and progressive delays
584
+ # WHY: Socket.IO server startup involves async initialization:
585
585
  # 1. Thread creation (~0.1s)
586
- # 2. Event loop setup (~1s)
586
+ # 2. Event loop setup (~0.5s)
587
587
  # 3. aiohttp server binding (~2-5s)
588
588
  # 4. Socket.IO service initialization (~1-3s)
589
- # Total: up to 15+ seconds for full readiness (especially on Python 3.13)
590
- max_attempts = 30 # Increased from 20 to handle Python 3.13 slower initialization
591
- initial_delay = 1.0 # Increased from 0.5s to give daemon more time to fork
592
- max_delay = 3.0 # Increased from 2.0s for slower systems
589
+ # Total: typically 2-5 seconds, up to 15 seconds max
590
+ max_attempts = 12 # Reduced from 30 - provides ~15 second total timeout
591
+ initial_delay = 0.75 # Reduced from 1.0s - balanced startup time
592
+ max_delay = 2.0 # Reduced from 3.0s - sufficient for binding delays
593
593
 
594
- logger.info(f"Waiting up to {max_attempts * max_delay} seconds for server to be fully ready...")
594
+ logger.info(f"Waiting up to ~15 seconds for server to be fully ready...")
595
595
 
596
596
  # Give the daemon initial time to fork and start before checking
597
597
  logger.debug("Allowing initial daemon startup time...")
@@ -617,8 +617,8 @@ def _start_standalone_socketio_server(port, logger):
617
617
  else:
618
618
  logger.debug(f"Server not yet accepting connections on attempt {attempt + 1}")
619
619
 
620
- logger.error(f"❌ Socket.IO server health check failed after {max_attempts} attempts ({max_attempts * max_delay:.1f}s)")
621
- logger.warning(f"⏱️ Server may still be starting - initialization can take 15+ seconds on some systems")
620
+ logger.error(f"❌ Socket.IO server health check failed after {max_attempts} attempts (~15s timeout)")
621
+ logger.warning(f"⏱️ Server may still be starting - try waiting a few more seconds")
622
622
  logger.warning(f"💡 The daemon process might be running but not yet accepting HTTP connections")
623
623
  logger.error(f"🔧 Troubleshooting steps:")
624
624
  logger.error(f" - Wait a few more seconds and try again")
@@ -19,12 +19,57 @@ try:
19
19
  # When installed as package, this should work directly
20
20
  from claude_mpm.services.socketio_server import SocketIOServer
21
21
  except ImportError:
22
- # When in development, add src to path
23
- project_root = script_dir.parent.parent.parent # from scripts -> claude_mpm -> src -> project_root
24
- src_path = project_root / "src"
25
- if src_path.exists():
26
- sys.path.insert(0, str(src_path))
27
- from claude_mpm.services.socketio_server import SocketIOServer
22
+ # Need to add the appropriate directory to sys.path
23
+ import sys
24
+
25
+ # Get the absolute path of this script
26
+ script_path = Path(__file__).resolve()
27
+
28
+ # Determine if we're in development or installed environment
29
+ if "site-packages" in str(script_path):
30
+ # Installed environment: ~/.local/pipx/venvs/claude-mpm/lib/python3.13/site-packages/claude_mpm/scripts/socketio_daemon.py
31
+ # Need to add site-packages directory to path
32
+ parts = script_path.parts
33
+ site_packages_idx = next(i for i, part in enumerate(parts) if part == "site-packages")
34
+ site_packages_path = Path(*parts[:site_packages_idx + 1])
35
+
36
+ if site_packages_path.exists() and str(site_packages_path) not in sys.path:
37
+ sys.path.insert(0, str(site_packages_path))
38
+ else:
39
+ # Development environment: Project/src/claude_mpm/scripts/socketio_daemon.py
40
+ # Need to add src directory to path
41
+ # Go up: scripts -> claude_mpm -> src
42
+ src_path = script_path.parent.parent.parent
43
+
44
+ if src_path.exists() and (src_path / "claude_mpm").exists() and str(src_path) not in sys.path:
45
+ sys.path.insert(0, str(src_path))
46
+
47
+ # Try importing again after path modification
48
+ try:
49
+ from claude_mpm.services.socketio_server import SocketIOServer
50
+ except ImportError as e:
51
+ print(f"❌ Failed to import SocketIOServer after path adjustment: {e}")
52
+ print(f"📍 Script path: {script_path}")
53
+ print(f"🐍 Python path entries: {len(sys.path)}")
54
+ for i, path in enumerate(sys.path):
55
+ print(f" [{i}] {path}")
56
+
57
+ # Check if claude_mpm directory exists in any path
58
+ claude_mpm_found = False
59
+ for path_str in sys.path:
60
+ claude_mpm_path = Path(path_str) / "claude_mpm"
61
+ if claude_mpm_path.exists():
62
+ print(f"✅ Found claude_mpm at: {claude_mpm_path}")
63
+ claude_mpm_found = True
64
+
65
+ if not claude_mpm_found:
66
+ print("❌ claude_mpm directory not found in any sys.path entry")
67
+
68
+ print("\n💡 Troubleshooting tips:")
69
+ print(" 1. Ensure claude-mpm is properly installed: pip install claude-mpm")
70
+ print(" 2. If in development, ensure you're in the project root directory")
71
+ print(" 3. Check that PYTHONPATH includes the package location")
72
+ sys.exit(1)
28
73
 
29
74
  PID_FILE = Path.home() / ".claude-mpm" / "socketio-server.pid"
30
75
  LOG_FILE = Path.home() / ".claude-mpm" / "socketio-server.log"
@@ -107,12 +107,14 @@ def ensure_socketio_dependencies(logger=None) -> Tuple[bool, str]:
107
107
  """
108
108
  Ensure Socket.IO dependencies are installed for monitoring features.
109
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.
110
+ WHY: Socket.IO dependencies (python-socketio, aiohttp, python-engineio) are now
111
+ core dependencies and should be installed automatically with claude-mpm.
112
+ This function verifies they are available and provides helpful error messages
113
+ if something went wrong during installation.
113
114
 
114
- DESIGN DECISION: We check each dependency individually and only install
115
- what's missing, reducing installation time and avoiding unnecessary work.
115
+ DESIGN DECISION: We still check each dependency individually to provide
116
+ specific error messages if any are missing, which helps with troubleshooting
117
+ installation issues.
116
118
 
117
119
  Args:
118
120
  logger: Optional logger for output
@@ -142,8 +144,9 @@ def ensure_socketio_dependencies(logger=None) -> Tuple[bool, str]:
142
144
  logger.debug("All Socket.IO dependencies are already installed")
143
145
  return True, ""
144
146
 
145
- # Install missing packages
146
- logger.info(f"Installing missing Socket.IO dependencies: {missing_packages}")
147
+ # Install missing packages (should be rare since they're now core dependencies)
148
+ logger.warning(f"Socket.IO dependencies are missing despite being core dependencies: {missing_packages}")
149
+ logger.info(f"Attempting to install missing dependencies: {missing_packages}")
147
150
  success, error_msg = install_packages(missing_packages, logger)
148
151
 
149
152
  if success:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.4.9
3
+ Version: 3.4.13
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
@@ -32,6 +32,9 @@ Requires-Dist: flask-cors>=4.0.0
32
32
  Requires-Dist: watchdog>=3.0.0
33
33
  Requires-Dist: tree-sitter>=0.21.0
34
34
  Requires-Dist: tree-sitter-language-pack>=0.8.0
35
+ Requires-Dist: python-socketio>=5.11.0
36
+ Requires-Dist: aiohttp>=3.9.0
37
+ Requires-Dist: python-engineio>=4.8.0
35
38
  Provides-Extra: dev
36
39
  Requires-Dist: pytest>=7.0; extra == "dev"
37
40
  Requires-Dist: pytest-asyncio; extra == "dev"
@@ -40,9 +43,6 @@ Requires-Dist: black; extra == "dev"
40
43
  Requires-Dist: flake8; extra == "dev"
41
44
  Requires-Dist: mypy; extra == "dev"
42
45
  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"
46
46
  Dynamic: author-email
47
47
  Dynamic: home-page
48
48
  Dynamic: license-file
@@ -43,7 +43,7 @@ claude_mpm/cli/commands/agents.py,sha256=FqqEQcfAfCxjz_E7fGQUtLznloJLz8fWQtnjQhk
43
43
  claude_mpm/cli/commands/info.py,sha256=ETL6jC08OTQVTPjs219Y0m3FzfKOUlI0-yI81AI8FXY,2990
44
44
  claude_mpm/cli/commands/memory.py,sha256=6jYD1bgfnWA0DvBpLJnZCPYMRoGAPBopAED8Qr-iIos,37357
45
45
  claude_mpm/cli/commands/monitor.py,sha256=80_tmSdfn_2cYpzxxPu9GnvFW0eixlSJ4wCqbn8VSCM,12407
46
- claude_mpm/cli/commands/run.py,sha256=Rv6RT2S9WN8KcqX5e9rtmALP8yiOSw8ojl_Qp7gugqg,30234
46
+ claude_mpm/cli/commands/run.py,sha256=xgiffMozZucZ4ELk6-sTQBn6FWC059OHsXx4vsZgyOc,30139
47
47
  claude_mpm/cli/commands/tickets.py,sha256=SXyGtHSyGJwTeJwDAHf7kRbdiG1DlZkXkod5UoNy7Ik,2150
48
48
  claude_mpm/cli/commands/ui.py,sha256=FhBQiOKW61cNduyryRu0UhC366d6o1eEkBgbPd7Au1w,1900
49
49
  claude_mpm/cli_module/__init__.py,sha256=CkMp4gzWKoZZF_qKyBDi2sQaZw_GLWZYLtKouv-4f8s,390
@@ -113,7 +113,7 @@ claude_mpm/orchestration/archive/subprocess_orchestrator.py,sha256=TYTAHX6p4OpgB
113
113
  claude_mpm/orchestration/archive/system_prompt_orchestrator.py,sha256=R16sc-94kQVeGjJzTYmvKn0aYgj_9qxyzShDy1E5zpE,12853
114
114
  claude_mpm/orchestration/archive/wrapper_orchestrator.py,sha256=cvL0NJf9kCWf3QJl67ySwvtR1Hd9Rym28Ii8Rtsdi6Q,6806
115
115
  claude_mpm/schemas/workflow_validator.py,sha256=qRgGodJoIZQaLfZ8OzWz3Y9eVNz3ckrQwkJ2RvccxAs,17175
116
- claude_mpm/scripts/socketio_daemon.py,sha256=xV2COFBtj2DZ2-hixfCw5beqz2dh4CEgynOtgmVsUdA,7459
116
+ claude_mpm/scripts/socketio_daemon.py,sha256=-vS7A55BQZCTbqcB7QAgWvZrcBqtIxcyriFcekgKIBU,9568
117
117
  claude_mpm/services/__init__.py,sha256=dcZ5U4xQlk-zpAy8CLTuEcXzKDfHT0KdJf3bYSmZ1BM,1904
118
118
  claude_mpm/services/agent_capabilities_generator.py,sha256=hWG0zV2InmzrDMxSbQzjVBBTzEaxg0bFxl8tmTMJ8qA,6565
119
119
  claude_mpm/services/agent_deployment.py,sha256=DtK1BX2yCrutUkQdVPD01mYHm-ya36l3EPOnEcaDfog,67961
@@ -184,7 +184,7 @@ claude_mpm/ui/rich_terminal_ui.py,sha256=gx_9TD0kR4Exq867pHjVVs_b-gw1q267t5oA2ZD
184
184
  claude_mpm/ui/terminal_ui.py,sha256=E_M-L-6EuGp6L8pRpaWEhTqf-ddDXhZp5W85D0XNRPw,11928
185
185
  claude_mpm/utils/__init__.py,sha256=E8Hvv6ykL6rnnc8-YmfoGNpRCZbcIirxcFuNz7YvDIg,346
186
186
  claude_mpm/utils/config_manager.py,sha256=TlekZYIWOz_ouWHQU4Gc-zckhoFK9AqA25b6A_XZdDc,16412
187
- claude_mpm/utils/dependency_manager.py,sha256=LcMFoXyGcqEHVvmNKpU-AyyYclgI6a722Mt9YVejXTM,7243
187
+ claude_mpm/utils/dependency_manager.py,sha256=2Gs881HkzwMEm7X2z7Lx8l2Lws4PvS-rPBuH737-rkg,7543
188
188
  claude_mpm/utils/error_handler.py,sha256=W_Zc0FrKudpXvxT66Oxx0v8WkR8HA2KlynzzGy3eGcU,8168
189
189
  claude_mpm/utils/framework_detection.py,sha256=nzs1qRZK9K-zT0382z1FpGDvgzUNrUg8rBL-O_WLq-Q,1217
190
190
  claude_mpm/utils/import_migration_example.py,sha256=W4a4XH3FY_VBB00BB8Lae2aRPM021PxLHzdUfEs0B5w,2463
@@ -193,9 +193,9 @@ claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E
193
193
  claude_mpm/utils/paths.py,sha256=Xv0SZWdZRkRjN9e6clBcA165ya00GNQxt7SwMz51tfA,10153
194
194
  claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
195
195
  claude_mpm/validation/agent_validator.py,sha256=GCA2b2rKhKDeaNyUqWxTiWIs3sDdWjD9cgOFRp9K6ic,18227
196
- claude_mpm-3.4.9.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
197
- claude_mpm-3.4.9.dist-info/METADATA,sha256=6pnWOA54pUJgoL2UxHpALQouGnq6ubiXkw633NzhHBw,6523
198
- claude_mpm-3.4.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
199
- claude_mpm-3.4.9.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
200
- claude_mpm-3.4.9.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
201
- claude_mpm-3.4.9.dist-info/RECORD,,
196
+ claude_mpm-3.4.13.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
197
+ claude_mpm-3.4.13.dist-info/METADATA,sha256=pwQp4ScPXDl8ER7DnVWAVF88FqLn1XxTPkp_THy21Z8,6464
198
+ claude_mpm-3.4.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
199
+ claude_mpm-3.4.13.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
200
+ claude_mpm-3.4.13.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
201
+ claude_mpm-3.4.13.dist-info/RECORD,,