claude-mpm 4.2.9__py3-none-any.whl → 4.2.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.
Files changed (50) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/cli/commands/dashboard.py +59 -126
  3. claude_mpm/cli/commands/monitor.py +71 -212
  4. claude_mpm/cli/commands/run.py +33 -33
  5. claude_mpm/dashboard/static/css/code-tree.css +8 -16
  6. claude_mpm/dashboard/static/dist/components/code-tree.js +1 -1
  7. claude_mpm/dashboard/static/dist/components/file-viewer.js +2 -0
  8. claude_mpm/dashboard/static/dist/components/module-viewer.js +1 -1
  9. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +1 -1
  10. claude_mpm/dashboard/static/dist/dashboard.js +1 -1
  11. claude_mpm/dashboard/static/dist/socket-client.js +1 -1
  12. claude_mpm/dashboard/static/js/components/code-tree.js +692 -114
  13. claude_mpm/dashboard/static/js/components/file-viewer.js +538 -0
  14. claude_mpm/dashboard/static/js/components/module-viewer.js +26 -0
  15. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +166 -14
  16. claude_mpm/dashboard/static/js/dashboard.js +108 -91
  17. claude_mpm/dashboard/static/js/socket-client.js +9 -7
  18. claude_mpm/dashboard/templates/index.html +2 -7
  19. claude_mpm/hooks/claude_hooks/hook_handler.py +1 -11
  20. claude_mpm/hooks/claude_hooks/services/connection_manager.py +54 -59
  21. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +112 -72
  22. claude_mpm/services/agents/deployment/agent_template_builder.py +0 -1
  23. claude_mpm/services/cli/unified_dashboard_manager.py +354 -0
  24. claude_mpm/services/monitor/__init__.py +20 -0
  25. claude_mpm/services/monitor/daemon.py +256 -0
  26. claude_mpm/services/monitor/event_emitter.py +279 -0
  27. claude_mpm/services/monitor/handlers/__init__.py +20 -0
  28. claude_mpm/services/monitor/handlers/code_analysis.py +334 -0
  29. claude_mpm/services/monitor/handlers/dashboard.py +298 -0
  30. claude_mpm/services/monitor/handlers/hooks.py +491 -0
  31. claude_mpm/services/monitor/management/__init__.py +18 -0
  32. claude_mpm/services/monitor/management/health.py +124 -0
  33. claude_mpm/services/monitor/management/lifecycle.py +298 -0
  34. claude_mpm/services/monitor/server.py +442 -0
  35. claude_mpm/tools/code_tree_analyzer.py +33 -17
  36. {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/METADATA +1 -1
  37. {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/RECORD +41 -36
  38. claude_mpm/cli/commands/socketio_monitor.py +0 -233
  39. claude_mpm/scripts/socketio_daemon.py +0 -571
  40. claude_mpm/scripts/socketio_daemon_hardened.py +0 -937
  41. claude_mpm/scripts/socketio_daemon_wrapper.py +0 -78
  42. claude_mpm/scripts/socketio_server_manager.py +0 -349
  43. claude_mpm/services/cli/dashboard_launcher.py +0 -423
  44. claude_mpm/services/cli/socketio_manager.py +0 -595
  45. claude_mpm/services/dashboard/stable_server.py +0 -1020
  46. claude_mpm/services/socketio/monitor_server.py +0 -505
  47. {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/WHEEL +0 -0
  48. {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/entry_points.txt +0 -0
  49. {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/licenses/LICENSE +0 -0
  50. {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/top_level.txt +0 -0
@@ -21,10 +21,11 @@ from typing import Optional
21
21
  from ...constants import LogLevel
22
22
  from ...core.logger import get_logger
23
23
  from ...core.unified_paths import get_scripts_dir
24
- from ...services.cli.dashboard_launcher import DashboardLauncher
25
24
  from ...services.cli.session_manager import SessionManager
26
- from ...services.cli.socketio_manager import SocketIOManager
25
+
26
+ # SocketIOManager functionality now provided by UnifiedDashboardManager
27
27
  from ...services.cli.startup_checker import StartupCheckerService
28
+ from ...services.cli.unified_dashboard_manager import UnifiedDashboardManager
28
29
  from ..shared import BaseCommand, CommandResult
29
30
  from ..startup_logging import (
30
31
  cleanup_old_startup_logs,
@@ -423,16 +424,16 @@ class RunCommand(BaseCommand):
423
424
  self.logger.warning(f"Dependency check failed: {e}")
424
425
 
425
426
  def _setup_monitoring(self, args):
426
- """Setup monitoring configuration using SocketIOManager."""
427
+ """Setup monitoring configuration using UnifiedDashboardManager."""
427
428
  monitor_mode = getattr(args, "monitor", False)
428
429
  websocket_port = 8765 # Default port
429
430
 
430
431
  if monitor_mode:
431
- # Use SocketIOManager for server management
432
- socketio_manager = SocketIOManager(self.logger)
432
+ # Use UnifiedDashboardManager for server management
433
+ dashboard_manager = UnifiedDashboardManager(self.logger)
433
434
 
434
435
  # Check dependencies
435
- deps_ok, error_msg = socketio_manager.ensure_dependencies()
436
+ deps_ok, error_msg = dashboard_manager.ensure_dependencies()
436
437
  if not deps_ok:
437
438
  self.logger.warning(
438
439
  f"Socket.IO dependencies not available: {error_msg}, disabling monitor mode"
@@ -440,8 +441,8 @@ class RunCommand(BaseCommand):
440
441
  monitor_mode = False
441
442
  else:
442
443
  # Find available port and start server
443
- websocket_port = socketio_manager.find_available_port(8765)
444
- success, server_info = socketio_manager.start_server(
444
+ websocket_port = dashboard_manager.find_available_port(8765)
445
+ success, server_info = dashboard_manager.start_server(
445
446
  port=websocket_port
446
447
  )
447
448
 
@@ -451,12 +452,12 @@ class RunCommand(BaseCommand):
451
452
  )
452
453
  monitor_mode = False
453
454
  else:
454
- # Use DashboardLauncher for browser opening only
455
- dashboard_launcher = DashboardLauncher(self.logger)
456
- monitor_url = dashboard_launcher.get_dashboard_url(websocket_port)
455
+ # Use UnifiedDashboardManager for browser opening only
456
+ dashboard_manager = UnifiedDashboardManager(self.logger)
457
+ monitor_url = dashboard_manager.get_dashboard_url(websocket_port)
457
458
 
458
459
  # Try to open browser
459
- browser_opened = dashboard_launcher._open_browser(monitor_url)
460
+ browser_opened = dashboard_manager.open_browser(monitor_url)
460
461
  args._browser_opened_by_cli = browser_opened
461
462
 
462
463
  if not browser_opened:
@@ -855,12 +856,12 @@ def run_session_legacy(args):
855
856
 
856
857
  # Display Socket.IO server info if enabled
857
858
  if enable_websocket:
858
- # Use SocketIOManager for server management
859
- socketio_manager = SocketIOManager(logger)
859
+ # Use UnifiedDashboardManager for server management
860
+ dashboard_manager = UnifiedDashboardManager(logger)
860
861
 
861
862
  # Check dependencies
862
863
  print("🔧 Checking Socket.IO dependencies...")
863
- deps_ok, error_msg = socketio_manager.ensure_dependencies()
864
+ deps_ok, error_msg = dashboard_manager.ensure_dependencies()
864
865
 
865
866
  if not deps_ok:
866
867
  print(f"❌ Failed to install Socket.IO dependencies: {error_msg}")
@@ -874,8 +875,8 @@ def run_session_legacy(args):
874
875
 
875
876
  # Find available port and start server if in monitor mode
876
877
  if monitor_mode:
877
- websocket_port = socketio_manager.find_available_port(websocket_port)
878
- success, server_info = socketio_manager.start_server(
878
+ websocket_port = dashboard_manager.find_available_port(websocket_port)
879
+ success, server_info = dashboard_manager.start_server(
879
880
  port=websocket_port
880
881
  )
881
882
 
@@ -886,10 +887,10 @@ def run_session_legacy(args):
886
887
  " Note: Socket.IO monitoring using exec mode with Claude Code hooks"
887
888
  )
888
889
 
889
- # Use DashboardLauncher for browser opening
890
- dashboard_launcher = DashboardLauncher(logger)
891
- monitor_url = dashboard_launcher.get_dashboard_url(websocket_port)
892
- browser_opened = dashboard_launcher._open_browser(monitor_url)
890
+ # Use UnifiedDashboardManager for browser opening
891
+ dashboard_manager = UnifiedDashboardManager(logger)
892
+ monitor_url = dashboard_manager.get_dashboard_url(websocket_port)
893
+ browser_opened = dashboard_manager.open_browser(monitor_url)
893
894
  args._browser_opened_by_cli = browser_opened
894
895
 
895
896
  if not browser_opened:
@@ -971,16 +972,15 @@ def run_session_legacy(args):
971
972
  runner.run_interactive(context)
972
973
 
973
974
 
974
- # Legacy helper functions - now delegating to SocketIOManager
975
+ # Legacy helper functions - now delegating to UnifiedDashboardManager
975
976
  def launch_socketio_monitor(port, logger):
976
977
  """Launch the Socket.IO monitoring dashboard (legacy compatibility)."""
977
- socketio_manager = SocketIOManager(logger)
978
- success, server_info = socketio_manager.start_server(port=port)
978
+ dashboard_manager = UnifiedDashboardManager(logger)
979
+ success, server_info = dashboard_manager.start_server(port=port)
979
980
 
980
981
  if success:
981
- # Open browser using DashboardLauncher
982
- launcher = DashboardLauncher(logger)
983
- browser_opened = launcher._open_browser(server_info.url)
982
+ # Open browser using UnifiedDashboardManager
983
+ browser_opened = dashboard_manager.open_browser(server_info.url)
984
984
  return success, browser_opened
985
985
 
986
986
  return False, False
@@ -988,21 +988,21 @@ def launch_socketio_monitor(port, logger):
988
988
 
989
989
  def _check_socketio_server_running(port, logger):
990
990
  """Check if a Socket.IO server is running on the specified port (legacy compatibility)."""
991
- socketio_manager = SocketIOManager(logger)
992
- return socketio_manager.is_server_running(port)
991
+ dashboard_manager = UnifiedDashboardManager(logger)
992
+ return dashboard_manager.is_server_running(port)
993
993
 
994
994
 
995
995
  def _start_standalone_socketio_server(port, logger):
996
996
  """Start a standalone Socket.IO server (legacy compatibility)."""
997
- socketio_manager = SocketIOManager(logger)
998
- success, _ = socketio_manager.start_server(port=port)
997
+ dashboard_manager = UnifiedDashboardManager(logger)
998
+ success, _ = dashboard_manager.start_server(port=port)
999
999
  return success
1000
1000
 
1001
1001
 
1002
1002
  def open_in_browser_tab(url, logger):
1003
1003
  """Open URL in browser, attempting to reuse existing tabs when possible."""
1004
- launcher = DashboardLauncher(logger)
1005
- return launcher._open_browser(url)
1004
+ manager = UnifiedDashboardManager(logger)
1005
+ return manager.open_browser(url)
1006
1006
 
1007
1007
 
1008
1008
  def _check_claude_json_memory(args, logger):
@@ -7,11 +7,10 @@
7
7
  background: #f8f9fa;
8
8
  }
9
9
 
10
- /* Split Container for Tree and Content */
10
+ /* Container for Code Tree - Now full width */
11
11
  .code-split-container {
12
12
  display: flex;
13
13
  flex: 1;
14
- gap: 10px;
15
14
  padding: 10px;
16
15
  overflow: hidden;
17
16
  }
@@ -461,33 +460,26 @@
461
460
  color: #2d3748;
462
461
  }
463
462
 
464
- /* Code Tree Container */
463
+ /* Code Tree Container - Full Width */
465
464
  .code-tree-container {
466
- flex: 0 0 50%;
467
- background: white;
468
- border-radius: 8px;
469
- padding: 20px;
470
- position: relative;
471
- overflow: auto;
472
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
473
- border-left: 1px solid #e2e8f0;
474
- }
475
-
476
- /* Code Content Area */
477
- .code-module-data-content {
478
465
  flex: 1;
479
466
  background: white;
480
467
  border-radius: 8px;
481
468
  padding: 20px;
469
+ position: relative;
482
470
  overflow: auto;
483
471
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
484
472
  border: 1px solid #e2e8f0;
485
473
  }
486
474
 
475
+ /* Code Content Area - DEPRECATED (Removed duplicate pane) */
476
+ /* Content now displayed in main Structured Data section */
477
+ /* .code-module-data-content class removed */
478
+
487
479
  /* Visual hierarchy improvements */
488
480
  .code-tree-container:focus-within {
489
481
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
490
- border-left-color: #3b82f6;
482
+ border-color: #3b82f6;
491
483
  }
492
484
 
493
485
  /* Loading indicator */