claude-mpm 4.2.9__tar.gz → 4.2.12__tar.gz

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 (656) hide show
  1. claude_mpm-4.2.12/BUILD_NUMBER +1 -0
  2. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/PKG-INFO +1 -1
  3. claude_mpm-4.2.12/VERSION +1 -0
  4. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/pyproject.toml +2 -2
  5. claude_mpm-4.2.12/src/claude_mpm/VERSION +1 -0
  6. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/dashboard.py +59 -126
  7. claude_mpm-4.2.12/src/claude_mpm/cli/commands/monitor.py +189 -0
  8. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/run.py +33 -33
  9. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/monitor_parser.py +12 -2
  10. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/code-tree.css +8 -16
  11. claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/code-tree.js +2 -0
  12. claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/file-viewer.js +2 -0
  13. claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  14. claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +2 -0
  15. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/dashboard.js +1 -1
  16. claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  17. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/code-tree.js +692 -114
  18. claude_mpm-4.2.12/src/claude_mpm/dashboard/static/js/components/file-viewer.js +538 -0
  19. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/module-viewer.js +26 -0
  20. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/unified-data-viewer.js +166 -14
  21. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/dashboard.js +108 -91
  22. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/socket-client.js +9 -7
  23. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/templates/index.html +2 -7
  24. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +1 -11
  25. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/connection_manager.py +54 -59
  26. claude_mpm-4.2.12/src/claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +230 -0
  27. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_template_builder.py +0 -1
  28. claude_mpm-4.2.12/src/claude_mpm/services/cli/unified_dashboard_manager.py +354 -0
  29. claude_mpm-4.2.12/src/claude_mpm/services/monitor/__init__.py +20 -0
  30. claude_mpm-4.2.12/src/claude_mpm/services/monitor/daemon.py +378 -0
  31. claude_mpm-4.2.12/src/claude_mpm/services/monitor/event_emitter.py +342 -0
  32. claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/__init__.py +20 -0
  33. claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/code_analysis.py +334 -0
  34. claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/dashboard.py +298 -0
  35. claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/hooks.py +491 -0
  36. claude_mpm-4.2.12/src/claude_mpm/services/monitor/management/__init__.py +18 -0
  37. claude_mpm-4.2.12/src/claude_mpm/services/monitor/management/health.py +124 -0
  38. claude_mpm-4.2.12/src/claude_mpm/services/monitor/management/lifecycle.py +338 -0
  39. claude_mpm-4.2.12/src/claude_mpm/services/monitor/server.py +596 -0
  40. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/code_tree_analyzer.py +33 -17
  41. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/PKG-INFO +1 -1
  42. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/SOURCES.txt +14 -9
  43. claude_mpm-4.2.9/BUILD_NUMBER +0 -1
  44. claude_mpm-4.2.9/VERSION +0 -1
  45. claude_mpm-4.2.9/src/claude_mpm/VERSION +0 -1
  46. claude_mpm-4.2.9/src/claude_mpm/cli/commands/monitor.py +0 -319
  47. claude_mpm-4.2.9/src/claude_mpm/cli/commands/socketio_monitor.py +0 -233
  48. claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  49. claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  50. claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  51. claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  52. claude_mpm-4.2.9/src/claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +0 -190
  53. claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_daemon.py +0 -571
  54. claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_daemon_hardened.py +0 -937
  55. claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_daemon_wrapper.py +0 -78
  56. claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_server_manager.py +0 -349
  57. claude_mpm-4.2.9/src/claude_mpm/services/cli/dashboard_launcher.py +0 -423
  58. claude_mpm-4.2.9/src/claude_mpm/services/cli/socketio_manager.py +0 -595
  59. claude_mpm-4.2.9/src/claude_mpm/services/dashboard/stable_server.py +0 -1020
  60. claude_mpm-4.2.9/src/claude_mpm/services/socketio/monitor_server.py +0 -505
  61. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/CLAUDE.md +0 -0
  62. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/LICENSE +0 -0
  63. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/MANIFEST.in +0 -0
  64. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/README.md +0 -0
  65. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/scripts/ticket +0 -0
  66. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/setup.cfg +0 -0
  67. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/BUILD_NUMBER +0 -0
  68. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/__init__.py +0 -0
  69. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/__main__.py +0 -0
  70. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
  71. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_DOCUMENTATION.md +0 -0
  72. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_ENGINEER.md +0 -0
  73. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_OPS.md +0 -0
  74. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_PM.md +0 -0
  75. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_QA.md +0 -0
  76. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_RESEARCH.md +0 -0
  77. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/INSTRUCTIONS.md +0 -0
  78. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/MEMORY.md +0 -0
  79. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/OUTPUT_STYLE.md +0 -0
  80. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/WORKFLOW.md +0 -0
  81. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/__init__.py +0 -0
  82. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agent-template.yaml +0 -0
  83. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agent_loader.py +0 -0
  84. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
  85. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agents_metadata.py +0 -0
  86. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/async_agent_loader.py +0 -0
  87. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/base_agent.json +0 -0
  88. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/base_agent_loader.py +0 -0
  89. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/frontmatter_validator.py +0 -0
  90. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/system_agent_config.py +0 -0
  91. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -0
  92. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -0
  93. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/__init__.py +0 -0
  94. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/agent-manager.json +0 -0
  95. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/agent-manager.md +0 -0
  96. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/agentic_coder_optimizer.json +0 -0
  97. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/api_qa.json +0 -0
  98. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/code_analyzer.json +0 -0
  99. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/data_engineer.json +0 -0
  100. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/documentation.json +0 -0
  101. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/engineer.json +0 -0
  102. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/gcp_ops_agent.json +0 -0
  103. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/imagemagick.json +0 -0
  104. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -0
  105. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -0
  106. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/memory_manager.json +0 -0
  107. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/ops.json +0 -0
  108. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/project_organizer.json +0 -0
  109. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/qa.json +0 -0
  110. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/refactoring_engineer.json +0 -0
  111. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/research.json +0 -0
  112. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/security.json +0 -0
  113. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/test-non-mpm.json +0 -0
  114. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/ticketing.json +0 -0
  115. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/vercel_ops_agent.json +0 -0
  116. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/version_control.json +0 -0
  117. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/web_qa.json +0 -0
  118. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/web_ui.json +0 -0
  119. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/__init__.py +0 -0
  120. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/__main__.py +0 -0
  121. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/__init__.py +0 -0
  122. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/agent_manager.py +0 -0
  123. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/agents.py +0 -0
  124. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/aggregate.py +0 -0
  125. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/analyze.py +0 -0
  126. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/analyze_code.py +0 -0
  127. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/cleanup.py +0 -0
  128. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/cleanup_orphaned_agents.py +0 -0
  129. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/config.py +0 -0
  130. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/configure.py +0 -0
  131. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/configure_tui.py +0 -0
  132. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/debug.py +0 -0
  133. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/doctor.py +0 -0
  134. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/info.py +0 -0
  135. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp.py +0 -0
  136. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_command_router.py +0 -0
  137. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_config_commands.py +0 -0
  138. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_install_commands.py +0 -0
  139. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_pipx_config.py +0 -0
  140. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_server_commands.py +0 -0
  141. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_tool_commands.py +0 -0
  142. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/memory.py +0 -0
  143. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mpm_init.py +0 -0
  144. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mpm_init_handler.py +0 -0
  145. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/tickets.py +0 -0
  146. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parser.py +0 -0
  147. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/__init__.py +0 -0
  148. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/agent_manager_parser.py +0 -0
  149. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/agents_parser.py +0 -0
  150. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/analyze_code_parser.py +0 -0
  151. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/analyze_parser.py +0 -0
  152. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/base_parser.py +0 -0
  153. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/config_parser.py +0 -0
  154. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/configure_parser.py +0 -0
  155. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/dashboard_parser.py +0 -0
  156. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/debug_parser.py +0 -0
  157. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/mcp_parser.py +0 -0
  158. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/memory_parser.py +0 -0
  159. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/mpm_init_parser.py +0 -0
  160. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/run_parser.py +0 -0
  161. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/tickets_parser.py +0 -0
  162. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/__init__.py +0 -0
  163. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/argument_patterns.py +0 -0
  164. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/base_command.py +0 -0
  165. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/error_handling.py +0 -0
  166. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/output_formatters.py +0 -0
  167. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/startup_logging.py +0 -0
  168. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/ticket_cli.py +0 -0
  169. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/utils.py +0 -0
  170. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/__init__.py +0 -0
  171. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/args.py +0 -0
  172. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/commands.py +0 -0
  173. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/migration_example.py +0 -0
  174. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/__init__.py +0 -0
  175. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-agents.md +0 -0
  176. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-config.md +0 -0
  177. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-doctor.md +0 -0
  178. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-help.md +0 -0
  179. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-init.md +0 -0
  180. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-status.md +0 -0
  181. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-tickets.md +0 -0
  182. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm.md +0 -0
  183. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/__init__.py +0 -0
  184. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/agent_config.py +0 -0
  185. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/experimental_features.py +0 -0
  186. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/paths.py +0 -0
  187. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/socketio_config.py +0 -0
  188. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/constants.py +0 -0
  189. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/__init__.py +0 -0
  190. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
  191. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/agent_registry.py +0 -0
  192. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/agent_session_manager.py +0 -0
  193. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/base_service.py +0 -0
  194. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/cache.py +0 -0
  195. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/claude_runner.py +0 -0
  196. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/config.py +0 -0
  197. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/config_aliases.py +0 -0
  198. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/config_constants.py +0 -0
  199. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/constants.py +0 -0
  200. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/container.py +0 -0
  201. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/exceptions.py +0 -0
  202. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/factories.py +0 -0
  203. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/framework_loader.py +0 -0
  204. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/hook_manager.py +0 -0
  205. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/hook_performance_config.py +0 -0
  206. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/injectable_service.py +0 -0
  207. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/instruction_reinforcement_hook.py +0 -0
  208. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/interactive_session.py +0 -0
  209. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/interfaces.py +0 -0
  210. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/lazy.py +0 -0
  211. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/log_manager.py +0 -0
  212. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/logger.py +0 -0
  213. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/logging_config.py +0 -0
  214. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
  215. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/mixins.py +0 -0
  216. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/oneshot_session.py +0 -0
  217. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/optimized_agent_loader.py +0 -0
  218. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/optimized_startup.py +0 -0
  219. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/output_style_manager.py +0 -0
  220. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
  221. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/service_registry.py +0 -0
  222. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/session_manager.py +0 -0
  223. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/__init__.py +0 -0
  224. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/config_loader.py +0 -0
  225. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/path_resolver.py +0 -0
  226. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/singleton_manager.py +0 -0
  227. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/socketio_pool.py +0 -0
  228. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/tool_access_control.py +0 -0
  229. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/types.py +0 -0
  230. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/typing_utils.py +0 -0
  231. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/unified_agent_registry.py +0 -0
  232. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/unified_config.py +0 -0
  233. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/unified_paths.py +0 -0
  234. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -0
  235. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/__init__.py +0 -0
  236. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/analysis_runner.py +0 -0
  237. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/api/simple_directory.py +0 -0
  238. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/index.html +0 -0
  239. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/open_dashboard.py +0 -0
  240. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/activity-tree.js +0 -0
  241. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/agent-inference.js +0 -0
  242. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/code-tree.js +0 -0
  243. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/code-viewer.js +0 -0
  244. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/event-processor.js +0 -0
  245. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/event-viewer.js +0 -0
  246. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/export-manager.js +0 -0
  247. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -0
  248. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -0
  249. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/hud-manager.js +0 -0
  250. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -0
  251. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/module-viewer.js +0 -0
  252. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/session-manager.js +0 -0
  253. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/socket-manager.js +0 -0
  254. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -0
  255. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -0
  256. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/working-directory.js +0 -0
  257. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/dashboard.js +0 -0
  258. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/socket-client.js +0 -0
  259. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/activity.css +0 -0
  260. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/connection-status.css +0 -0
  261. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/dashboard.css +0 -0
  262. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -0
  263. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -0
  264. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -0
  265. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/event-processor.js +0 -0
  266. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -0
  267. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/export-manager.js +0 -0
  268. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -0
  269. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -0
  270. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -0
  271. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -0
  272. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/session-manager.js +0 -0
  273. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -0
  274. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -0
  275. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/working-directory.js +0 -0
  276. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/activity-tree.js +0 -0
  277. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -0
  278. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/agent-inference.js +0 -0
  279. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/build-tracker.js +0 -0
  280. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/code-simple.js +0 -0
  281. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/code-viewer.js +0 -0
  282. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/connection-debug.js +0 -0
  283. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/event-processor.js +0 -0
  284. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/event-viewer.js +0 -0
  285. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/export-manager.js +0 -0
  286. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -0
  287. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -0
  288. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/hud-manager.js +0 -0
  289. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -0
  290. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/session-manager.js +0 -0
  291. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/socket-manager.js +0 -0
  292. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -0
  293. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/working-directory.js +0 -0
  294. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/connection-manager.js +0 -0
  295. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/extension-error-handler.js +0 -0
  296. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/test-simple.html +0 -0
  297. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/test_debug.html +0 -0
  298. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/templates/code_simple.html +0 -0
  299. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/test_dashboard.html +0 -0
  300. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/experimental/__init__.py +0 -0
  301. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
  302. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/generators/__init__.py +0 -0
  303. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
  304. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/__init__.py +0 -0
  305. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/base_hook.py +0 -0
  306. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
  307. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/connection_pool.py +0 -0
  308. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/event_handlers.py +0 -0
  309. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -0
  310. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -0
  311. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -0
  312. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +0 -0
  313. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/installer.py +0 -0
  314. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/memory_integration.py +0 -0
  315. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/response_tracking.py +0 -0
  316. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/__init__.py +0 -0
  317. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/duplicate_detector.py +0 -0
  318. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/state_manager.py +0 -0
  319. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/subagent_processor.py +0 -0
  320. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/tool_analysis.py +0 -0
  321. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/memory_integration_hook.py +0 -0
  322. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
  323. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/validation_hooks.py +0 -0
  324. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/init.py +0 -0
  325. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/models/__init__.py +0 -0
  326. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/models/agent_definition.py +0 -0
  327. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/models/agent_session.py +0 -0
  328. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/schemas/__init__.py +0 -0
  329. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/__init__.py +0 -0
  330. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/claude-hook-handler.sh +0 -0
  331. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/mcp_server.py +0 -0
  332. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/mcp_wrapper.py +0 -0
  333. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/mpm_doctor.py +0 -0
  334. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/start_activity_logging.py +0 -0
  335. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/__init__.py +0 -0
  336. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agent_capabilities_service.py +0 -0
  337. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/__init__.py +0 -0
  338. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/agent_builder.py +0 -0
  339. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/__init__.py +0 -0
  340. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_config_provider.py +0 -0
  341. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_configuration_manager.py +0 -0
  342. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_definition_factory.py +0 -0
  343. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_deployment.py +0 -0
  344. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_discovery_service.py +0 -0
  345. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_environment_manager.py +0 -0
  346. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_filesystem_manager.py +0 -0
  347. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_format_converter.py +0 -0
  348. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +0 -0
  349. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +0 -0
  350. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -0
  351. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_metrics_collector.py +0 -0
  352. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_operation_service.py +0 -0
  353. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_record_service.py +0 -0
  354. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_restore_handler.py +0 -0
  355. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_state_service.py +0 -0
  356. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_validator.py +0 -0
  357. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_version_manager.py +0 -0
  358. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_versioning.py +0 -0
  359. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agents_directory_resolver.py +0 -0
  360. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/async_agent_deployment.py +0 -0
  361. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/base_agent_locator.py +0 -0
  362. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/config/__init__.py +0 -0
  363. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/config/deployment_config.py +0 -0
  364. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/config/deployment_config_manager.py +0 -0
  365. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_config_loader.py +0 -0
  366. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_results_manager.py +0 -0
  367. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_type_detector.py +0 -0
  368. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_wrapper.py +0 -0
  369. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/__init__.py +0 -0
  370. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +0 -0
  371. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/deployment_executor.py +0 -0
  372. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/deployment_facade.py +0 -0
  373. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +0 -0
  374. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/interface_adapter.py +0 -0
  375. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/lifecycle_health_checker.py +0 -0
  376. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +0 -0
  377. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/multi_source_deployment_service.py +0 -0
  378. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/__init__.py +0 -0
  379. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +0 -0
  380. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +0 -0
  381. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +0 -0
  382. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +0 -0
  383. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +0 -0
  384. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +0 -0
  385. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +0 -0
  386. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +0 -0
  387. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +0 -0
  388. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/__init__.py +0 -0
  389. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +0 -0
  390. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +0 -0
  391. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/agent_processor.py +0 -0
  392. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +0 -0
  393. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/results/__init__.py +0 -0
  394. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/results/deployment_metrics.py +0 -0
  395. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/results/deployment_result_builder.py +0 -0
  396. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/single_agent_deployer.py +0 -0
  397. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/__init__.py +0 -0
  398. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/base_strategy.py +0 -0
  399. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/project_strategy.py +0 -0
  400. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/strategy_selector.py +0 -0
  401. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/system_strategy.py +0 -0
  402. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/user_strategy.py +0 -0
  403. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/system_instructions_deployer.py +0 -0
  404. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/__init__.py +0 -0
  405. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/agent_validator.py +0 -0
  406. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/deployment_validator.py +0 -0
  407. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/template_validator.py +0 -0
  408. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/validation_result.py +0 -0
  409. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/__init__.py +0 -0
  410. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/agent_profile_loader.py +0 -0
  411. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/base_agent_manager.py +0 -0
  412. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/framework_agent_loader.py +0 -0
  413. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/management/__init__.py +0 -0
  414. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/management/agent_capabilities_generator.py +0 -0
  415. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/management/agent_management_service.py +0 -0
  416. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/__init__.py +0 -0
  417. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/agent_memory_manager.py +0 -0
  418. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/agent_persistence_service.py +0 -0
  419. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/content_manager.py +0 -0
  420. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_categorization_service.py +0 -0
  421. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_file_service.py +0 -0
  422. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_format_service.py +0 -0
  423. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_limits_service.py +0 -0
  424. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/template_generator.py +0 -0
  425. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/registry/__init__.py +0 -0
  426. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/registry/deployed_agent_discovery.py +0 -0
  427. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/registry/modification_tracker.py +0 -0
  428. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/async_session_logger.py +0 -0
  429. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/claude_session_logger.py +0 -0
  430. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/__init__.py +0 -0
  431. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_cleanup_service.py +0 -0
  432. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_dependency_service.py +0 -0
  433. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_listing_service.py +0 -0
  434. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_output_formatter.py +0 -0
  435. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_validation_service.py +0 -0
  436. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/memory_crud_service.py +0 -0
  437. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/memory_output_formatter.py +0 -0
  438. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/session_manager.py +0 -0
  439. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/startup_checker.py +0 -0
  440. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/command_deployment_service.py +0 -0
  441. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/command_handler_service.py +0 -0
  442. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/communication/__init__.py +0 -0
  443. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/__init__.py +0 -0
  444. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/base.py +0 -0
  445. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/cache_manager.py +0 -0
  446. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/__init__.py +0 -0
  447. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/agent.py +0 -0
  448. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/communication.py +0 -0
  449. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/infrastructure.py +0 -0
  450. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/service.py +0 -0
  451. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces.py +0 -0
  452. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/memory_manager.py +0 -0
  453. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/path_resolver.py +0 -0
  454. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/service_container.py +0 -0
  455. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/service_interfaces.py +0 -0
  456. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/__init__.py +0 -0
  457. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/__init__.py +0 -0
  458. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/agent_check.py +0 -0
  459. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/base_check.py +0 -0
  460. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/claude_desktop_check.py +0 -0
  461. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/common_issues_check.py +0 -0
  462. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/configuration_check.py +0 -0
  463. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/filesystem_check.py +0 -0
  464. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/installation_check.py +0 -0
  465. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/instructions_check.py +0 -0
  466. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/mcp_check.py +0 -0
  467. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/monitor_check.py +0 -0
  468. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/startup_log_check.py +0 -0
  469. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/diagnostic_runner.py +0 -0
  470. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/doctor_reporter.py +0 -0
  471. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/models.py +0 -0
  472. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_aggregator.py +0 -0
  473. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/__init__.py +0 -0
  474. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/config.py +0 -0
  475. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/direct_relay.py +0 -0
  476. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/event_bus.py +0 -0
  477. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/relay.py +0 -0
  478. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/__init__.py +0 -0
  479. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/__init__.py +0 -0
  480. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/dead_letter.py +0 -0
  481. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/logging.py +0 -0
  482. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/metrics.py +0 -0
  483. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/socketio.py +0 -0
  484. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/core.py +0 -0
  485. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/interfaces.py +0 -0
  486. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/producers/__init__.py +0 -0
  487. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/producers/hook.py +0 -0
  488. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/producers/system.py +0 -0
  489. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/exceptions.py +0 -0
  490. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
  491. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
  492. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
  493. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
  494. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
  495. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
  496. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +0 -0
  497. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +0 -0
  498. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +0 -0
  499. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +0 -0
  500. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
  501. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
  502. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +0 -0
  503. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +0 -0
  504. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +0 -0
  505. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +0 -0
  506. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
  507. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
  508. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
  509. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/hook_service.py +0 -0
  510. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/__init__.py +0 -0
  511. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/context_preservation.py +0 -0
  512. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/daemon_manager.py +0 -0
  513. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/logging.py +0 -0
  514. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/__init__.py +0 -0
  515. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/aggregator.py +0 -0
  516. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/base.py +0 -0
  517. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/legacy.py +0 -0
  518. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/network.py +0 -0
  519. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/process.py +0 -0
  520. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/resources.py +0 -0
  521. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/service.py +0 -0
  522. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring.py +0 -0
  523. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/__init__.py +0 -0
  524. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/auto_configure.py +0 -0
  525. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/__init__.py +0 -0
  526. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/config_loader.py +0 -0
  527. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/config_schema.py +0 -0
  528. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/configuration.py +0 -0
  529. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/__init__.py +0 -0
  530. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/base.py +0 -0
  531. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/exceptions.py +0 -0
  532. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/interfaces.py +0 -0
  533. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/process_pool.py +0 -0
  534. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -0
  535. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -0
  536. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/main.py +0 -0
  537. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/registry/__init__.py +0 -0
  538. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -0
  539. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -0
  540. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/__init__.py +0 -0
  541. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -0
  542. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -0
  543. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -0
  544. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/__init__.py +0 -0
  545. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -0
  546. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -0
  547. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -0
  548. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -0
  549. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -0
  550. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -0
  551. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/__init__.py +0 -0
  552. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/builder.py +0 -0
  553. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/cache/__init__.py +0 -0
  554. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/cache/shared_prompt_cache.py +0 -0
  555. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/cache/simple_cache.py +0 -0
  556. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/indexed_memory.py +0 -0
  557. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/optimizer.py +0 -0
  558. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/router.py +0 -0
  559. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory_hook_service.py +0 -0
  560. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/monitor_build_service.py +0 -0
  561. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/port_manager.py +0 -0
  562. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/__init__.py +0 -0
  563. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/analyzer.py +0 -0
  564. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/analyzer_refactored.py +0 -0
  565. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/analyzer_v2.py +0 -0
  566. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/architecture_analyzer.py +0 -0
  567. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/dependency_analyzer.py +0 -0
  568. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/language_analyzer.py +0 -0
  569. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/metrics_collector.py +0 -0
  570. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/registry.py +0 -0
  571. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/recovery_manager.py +0 -0
  572. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/response_tracker.py +0 -0
  573. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/runner_configuration_service.py +0 -0
  574. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/session_management_service.py +0 -0
  575. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/__init__.py +0 -0
  576. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/async_service_base.py +0 -0
  577. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/config_service_base.py +0 -0
  578. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/lifecycle_service_base.py +0 -0
  579. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/manager_base.py +0 -0
  580. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/service_factory.py +0 -0
  581. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/__init__.py +0 -0
  582. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/client_proxy.py +0 -0
  583. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/dashboard_server.py +0 -0
  584. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/event_normalizer.py +0 -0
  585. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/__init__.py +0 -0
  586. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/base.py +0 -0
  587. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/code_analysis.py +0 -0
  588. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/connection.py +0 -0
  589. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/connection_handler.py +0 -0
  590. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/file.py +0 -0
  591. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/git.py +0 -0
  592. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/hook.py +0 -0
  593. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/memory.py +0 -0
  594. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/project.py +0 -0
  595. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/registry.py +0 -0
  596. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/migration_utils.py +0 -0
  597. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/monitor_client.py +0 -0
  598. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/__init__.py +0 -0
  599. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/broadcaster.py +0 -0
  600. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/connection_manager.py +0 -0
  601. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/core.py +0 -0
  602. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/eventbus_integration.py +0 -0
  603. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/main.py +0 -0
  604. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio_client_manager.py +0 -0
  605. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio_server.py +0 -0
  606. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/subprocess_launcher_service.py +0 -0
  607. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/system_instructions_service.py +0 -0
  608. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_manager.py +0 -0
  609. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/__init__.py +0 -0
  610. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/crud_service.py +0 -0
  611. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/formatter_service.py +0 -0
  612. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/search_service.py +0 -0
  613. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/validation_service.py +0 -0
  614. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/workflow_service.py +0 -0
  615. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/utility_service.py +0 -0
  616. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/__init__.py +0 -0
  617. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
  618. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
  619. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/git_operations.py +0 -0
  620. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
  621. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/version_parser.py +0 -0
  622. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_service.py +0 -0
  623. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/visualization/__init__.py +0 -0
  624. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/visualization/mermaid_generator.py +0 -0
  625. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/storage/__init__.py +0 -0
  626. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/storage/state_storage.py +0 -0
  627. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/ticket_wrapper.py +0 -0
  628. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/__init__.py +0 -0
  629. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/__main__.py +0 -0
  630. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/code_tree_builder.py +0 -0
  631. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/code_tree_events.py +0 -0
  632. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/socketio_debug.py +0 -0
  633. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/__init__.py +0 -0
  634. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/agent_dependency_loader.py +0 -0
  635. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/config_manager.py +0 -0
  636. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/console.py +0 -0
  637. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/dependency_cache.py +0 -0
  638. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/dependency_manager.py +0 -0
  639. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/dependency_strategies.py +0 -0
  640. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/environment_context.py +0 -0
  641. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/error_handler.py +0 -0
  642. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/file_utils.py +0 -0
  643. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/framework_detection.py +0 -0
  644. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/import_migration_example.py +0 -0
  645. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/imports.py +0 -0
  646. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/path_operations.py +0 -0
  647. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/robust_installer.py +0 -0
  648. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/session_logging.py +0 -0
  649. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/subprocess_utils.py +0 -0
  650. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/validation/__init__.py +0 -0
  651. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/validation/agent_validator.py +0 -0
  652. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/validation/frontmatter_validator.py +0 -0
  653. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
  654. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/entry_points.txt +0 -0
  655. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/requires.txt +0 -0
  656. {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ 341
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.2.9
3
+ Version: 4.2.12
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
@@ -0,0 +1 @@
1
+ 4.2.12
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "claude-mpm"
7
- version = "4.2.9"
7
+ version = "4.2.12"
8
8
  description = "Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -248,7 +248,7 @@ ignore-imports = false
248
248
 
249
249
  [tool.commitizen]
250
250
  name = "cz_conventional_commits"
251
- version = "4.2.9"
251
+ version = "4.2.12"
252
252
  version_files = [
253
253
  "VERSION",
254
254
  "src/claude_mpm/VERSION",
@@ -0,0 +1 @@
1
+ 4.2.11
@@ -5,21 +5,20 @@ WHY: This module provides CLI commands for managing the web dashboard interface,
5
5
  allowing users to start, stop, check status, and open the dashboard in a browser.
6
6
 
7
7
  DESIGN DECISIONS:
8
- - Use DashboardLauncher service for consistent dashboard management
8
+ - Use UnifiedMonitorDaemon for integrated dashboard and monitoring
9
9
  - Support both foreground and background operation modes
10
- - Integrate with SocketIO server for real-time event streaming
10
+ - Integrate with EventBus for real-time event streaming
11
11
  - Provide browser auto-opening functionality
12
12
  """
13
13
 
14
14
  import signal
15
15
  import sys
16
- import time
17
16
  from typing import Optional
18
17
 
19
18
  from ...constants import DashboardCommands
20
- from ...services.cli.dashboard_launcher import DashboardLauncher
19
+ from ...services.cli.unified_dashboard_manager import UnifiedDashboardManager
20
+ from ...services.monitor.daemon import UnifiedMonitorDaemon
21
21
  from ...services.port_manager import PortManager
22
- from ...services.socketio.dashboard_server import DashboardServer
23
22
  from ..shared import BaseCommand, CommandResult
24
23
 
25
24
 
@@ -28,7 +27,7 @@ class DashboardCommand(BaseCommand):
28
27
 
29
28
  def __init__(self):
30
29
  super().__init__("dashboard")
31
- self.dashboard_launcher = DashboardLauncher(self.logger)
30
+ self.dashboard_manager = UnifiedDashboardManager(self.logger)
32
31
  self.port_manager = PortManager()
33
32
  self.server = None
34
33
 
@@ -79,20 +78,20 @@ class DashboardCommand(BaseCommand):
79
78
  )
80
79
 
81
80
  # Check if dashboard is already running
82
- if self.dashboard_launcher.is_dashboard_running(port):
83
- dashboard_url = self.dashboard_launcher.get_dashboard_url(port)
81
+ if self.dashboard_manager.is_dashboard_running(port):
82
+ dashboard_url = self.dashboard_manager.get_dashboard_url(port)
84
83
  return CommandResult.success_result(
85
84
  f"Dashboard already running at {dashboard_url}",
86
85
  data={"url": dashboard_url, "port": port},
87
86
  )
88
87
 
89
88
  if background:
90
- # Use the dashboard launcher for background mode
91
- success, browser_opened = self.dashboard_launcher.launch_dashboard(
92
- port=port, monitor_mode=True
89
+ # Use the unified dashboard manager for background mode
90
+ success, browser_opened = self.dashboard_manager.start_dashboard(
91
+ port=port, background=True, open_browser=True
93
92
  )
94
93
  if success:
95
- dashboard_url = self.dashboard_launcher.get_dashboard_url(port)
94
+ dashboard_url = self.dashboard_manager.get_dashboard_url(port)
96
95
  return CommandResult.success_result(
97
96
  f"Dashboard started at {dashboard_url}",
98
97
  data={
@@ -103,110 +102,44 @@ class DashboardCommand(BaseCommand):
103
102
  )
104
103
  return CommandResult.error_result("Failed to start dashboard in background")
105
104
 
106
- # Run in foreground mode
107
- server_started = False
105
+ # Run in foreground mode using unified monitor daemon
106
+ try:
107
+ self.logger.info("Starting unified monitor daemon with dashboard...")
108
+ print(f"Starting unified dashboard and monitor on {host}:{port}...")
109
+ print("Press Ctrl+C to stop the server")
110
+ print(
111
+ "\n✅ Using unified daemon - includes dashboard, monitoring, and EventBus integration\n"
112
+ )
108
113
 
109
- # Try stable server first (or if explicitly requested)
110
- if use_stable:
111
- try:
112
- self.logger.info(
113
- "Starting stable dashboard server (no monitor dependency)..."
114
- )
115
- print(f"Starting stable dashboard server on {host}:{port}...")
116
- print("Press Ctrl+C to stop the server")
117
- print("\n✅ Using stable server - works without monitor service\n")
118
-
119
- # Create and run the stable server
120
- from ...services.dashboard.stable_server import StableDashboardServer
121
-
122
- stable_server = StableDashboardServer(host=host, port=port, debug=debug)
123
-
124
- # Set up signal handlers for graceful shutdown
125
- def signal_handler(signum, frame):
126
- print("\nShutting down dashboard server...")
127
- sys.exit(0)
128
-
129
- signal.signal(signal.SIGINT, signal_handler)
130
- signal.signal(signal.SIGTERM, signal_handler)
131
-
132
- # Run the server (blocking)
133
- result = stable_server.run()
134
- if result:
135
- # Server ran successfully and stopped normally
136
- server_started = True
137
- return CommandResult.success_result("Dashboard server stopped")
138
- # Server failed to start (e.g., couldn't find templates)
139
- server_started = False
140
- self.logger.warning(
141
- "Stable server failed to start, trying advanced server..."
142
- )
114
+ # Create and start the unified monitor daemon
115
+ daemon = UnifiedMonitorDaemon(host=host, port=port, daemon_mode=False)
143
116
 
144
- except KeyboardInterrupt:
145
- print("\nDashboard server stopped by user")
146
- return CommandResult.success_result("Dashboard server stopped")
147
- except Exception as e:
148
- self.logger.warning(f"Stable server failed: {e}")
149
- if not getattr(args, "no_fallback", False):
150
- print(f"\n⚠️ Stable server failed: {e}")
151
- print("Attempting fallback to advanced server...")
152
- else:
153
- return CommandResult.error_result(
154
- f"Failed to start stable dashboard: {e}"
155
- )
156
-
157
- # Fallback to advanced DashboardServer if stable server failed or not requested
158
- if not server_started and not getattr(args, "stable_only", False):
159
- try:
160
- self.logger.info(
161
- "Attempting to start advanced dashboard server with monitor..."
162
- )
163
- print(f"\nStarting advanced dashboard server on {host}:{port}...")
164
- print("Note: This requires monitor service on port 8766")
165
- print("Press Ctrl+C to stop the server")
166
-
167
- # Create and start the Dashboard server (with monitor client)
168
- self.server = DashboardServer(host=host, port=port)
169
-
170
- # Set up signal handlers for graceful shutdown
171
- def signal_handler(signum, frame):
172
- print("\nShutting down dashboard server...")
173
- if self.server:
174
- self.server.stop_sync()
175
- sys.exit(0)
176
-
177
- signal.signal(signal.SIGINT, signal_handler)
178
- signal.signal(signal.SIGTERM, signal_handler)
179
-
180
- # Start the server (this starts in background thread)
181
- self.server.start_sync()
182
-
183
- # Keep the main thread alive while server is running
184
- # The server runs in a background thread, so we need to block here
185
- try:
186
- while self.server.is_running():
187
- time.sleep(1)
188
- except KeyboardInterrupt:
189
- # Ctrl+C pressed, stop the server
190
- pass
191
-
192
- # Server has stopped or user interrupted
193
- if self.server:
194
- self.server.stop_sync()
195
-
196
- return CommandResult.success_result("Dashboard server stopped")
197
-
198
- except KeyboardInterrupt:
199
- print("\nDashboard server stopped by user")
200
- return CommandResult.success_result("Dashboard server stopped")
201
- except Exception as e:
202
- # If both servers fail, provide helpful error message
203
- error_msg = f"Failed to start dashboard: {e}\n\n"
204
- error_msg += "💡 Troubleshooting tips:\n"
205
- error_msg += f" - Check if port {port} is already in use\n"
206
- error_msg += " - Try running with --stable flag for standalone mode\n"
207
- error_msg += " - Use --debug flag for more details\n"
208
- return CommandResult.error_result(error_msg)
209
- return None
117
+ # Set up signal handlers for graceful shutdown
118
+ def signal_handler(signum, frame):
119
+ print("\nShutting down unified monitor daemon...")
120
+ daemon.stop()
121
+ sys.exit(0)
122
+
123
+ signal.signal(signal.SIGINT, signal_handler)
124
+ signal.signal(signal.SIGTERM, signal_handler)
125
+
126
+ # Start the daemon (blocking in foreground mode)
127
+ success = daemon.start()
128
+ if success:
129
+ return CommandResult.success_result("Unified monitor daemon stopped")
130
+ return CommandResult.error_result("Failed to start unified monitor daemon")
131
+
132
+ except KeyboardInterrupt:
133
+ print("\nUnified monitor daemon stopped by user")
134
+ return CommandResult.success_result("Unified monitor daemon stopped")
135
+ except Exception as e:
136
+ self.logger.error(f"Unified monitor daemon failed: {e}")
137
+ error_msg = f"Failed to start unified monitor daemon: {e}\n\n"
138
+ error_msg += "💡 Troubleshooting tips:\n"
139
+ error_msg += f" - Check if port {port} is already in use\n"
140
+ error_msg += " - Use --debug flag for more details\n"
141
+ error_msg += " - Check that all dependencies are installed\n"
142
+ return CommandResult.error_result(error_msg)
210
143
 
211
144
  def _stop_dashboard(self, args) -> CommandResult:
212
145
  """Stop the dashboard server."""
@@ -214,10 +147,10 @@ class DashboardCommand(BaseCommand):
214
147
 
215
148
  self.logger.info(f"Stopping dashboard on port {port}")
216
149
 
217
- if not self.dashboard_launcher.is_dashboard_running(port):
150
+ if not self.dashboard_manager.is_dashboard_running(port):
218
151
  return CommandResult.success_result(f"No dashboard running on port {port}")
219
152
 
220
- if self.dashboard_launcher.stop_dashboard(port):
153
+ if self.dashboard_manager.stop_dashboard(port):
221
154
  return CommandResult.success_result(f"Dashboard stopped on port {port}")
222
155
 
223
156
  return CommandResult.error_result(f"Failed to stop dashboard on port {port}")
@@ -229,7 +162,7 @@ class DashboardCommand(BaseCommand):
229
162
 
230
163
  # Check default port first
231
164
  default_port = 8765
232
- dashboard_running = self.dashboard_launcher.is_dashboard_running(default_port)
165
+ dashboard_running = self.dashboard_manager.is_dashboard_running(default_port)
233
166
 
234
167
  status_data = {
235
168
  "running": dashboard_running,
@@ -237,17 +170,17 @@ class DashboardCommand(BaseCommand):
237
170
  }
238
171
 
239
172
  if dashboard_running:
240
- status_data["url"] = self.dashboard_launcher.get_dashboard_url(default_port)
173
+ status_data["url"] = self.dashboard_manager.get_dashboard_url(default_port)
241
174
 
242
175
  # Check all ports if requested
243
176
  if show_ports:
244
177
  port_status = {}
245
178
  for port in range(8765, 8786):
246
- is_running = self.dashboard_launcher.is_dashboard_running(port)
179
+ is_running = self.dashboard_manager.is_dashboard_running(port)
247
180
  port_status[port] = {
248
181
  "running": is_running,
249
182
  "url": (
250
- self.dashboard_launcher.get_dashboard_url(port)
183
+ self.dashboard_manager.get_dashboard_url(port)
251
184
  if is_running
252
185
  else None
253
186
  ),
@@ -280,14 +213,14 @@ class DashboardCommand(BaseCommand):
280
213
  port = getattr(args, "port", 8765)
281
214
 
282
215
  # Check if dashboard is running
283
- if not self.dashboard_launcher.is_dashboard_running(port):
216
+ if not self.dashboard_manager.is_dashboard_running(port):
284
217
  self.logger.info("Dashboard not running, starting it first...")
285
218
  # Start dashboard in background
286
- success, browser_opened = self.dashboard_launcher.launch_dashboard(
287
- port=port, monitor_mode=True
219
+ success, browser_opened = self.dashboard_manager.start_dashboard(
220
+ port=port, background=True, open_browser=True
288
221
  )
289
222
  if success:
290
- dashboard_url = self.dashboard_launcher.get_dashboard_url(port)
223
+ dashboard_url = self.dashboard_manager.get_dashboard_url(port)
291
224
  return CommandResult.success_result(
292
225
  f"Dashboard started and opened at {dashboard_url}",
293
226
  data={
@@ -298,8 +231,8 @@ class DashboardCommand(BaseCommand):
298
231
  )
299
232
  return CommandResult.error_result("Failed to start and open dashboard")
300
233
  # Dashboard already running, just open browser
301
- dashboard_url = self.dashboard_launcher.get_dashboard_url(port)
302
- if self.dashboard_launcher._open_browser(dashboard_url):
234
+ dashboard_url = self.dashboard_manager.get_dashboard_url(port)
235
+ if self.dashboard_manager.open_browser(dashboard_url):
303
236
  return CommandResult.success_result(
304
237
  f"Opened dashboard at {dashboard_url}",
305
238
  data={"url": dashboard_url, "port": port},
@@ -0,0 +1,189 @@
1
+ """
2
+ Monitor command implementation for claude-mpm.
3
+
4
+ WHY: This module provides CLI commands for managing the unified monitoring daemon,
5
+ providing a single stable way to launch all monitoring functionality including
6
+ HTTP dashboard, Socket.IO events, real AST analysis, and Claude Code hook ingestion.
7
+
8
+ DESIGN DECISIONS:
9
+ - Use UnifiedMonitorDaemon for single stable monitoring service
10
+ - Single port (8765) for all functionality
11
+ - Support both foreground and daemon modes
12
+ - Real AST analysis using CodeTreeAnalyzer
13
+ - Integrated dashboard and Socket.IO server
14
+ """
15
+
16
+ from typing import Optional
17
+
18
+ from ...constants import MonitorCommands
19
+ from ...services.monitor.daemon import UnifiedMonitorDaemon
20
+ from ..shared import BaseCommand, CommandResult
21
+
22
+
23
+ class MonitorCommand(BaseCommand):
24
+ """Monitor command for managing the unified monitoring daemon."""
25
+
26
+ def __init__(self):
27
+ super().__init__("monitor")
28
+ self.daemon = None
29
+
30
+ def validate_args(self, args) -> Optional[str]:
31
+ """Validate command arguments."""
32
+ # Monitor command allows no subcommand (defaults to status)
33
+ if hasattr(args, "monitor_command") and args.monitor_command:
34
+ valid_commands = [cmd.value for cmd in MonitorCommands]
35
+ if args.monitor_command not in valid_commands:
36
+ return f"Unknown monitor command: {args.monitor_command}. Valid commands: {', '.join(valid_commands)}"
37
+
38
+ return None
39
+
40
+ def run(self, args) -> CommandResult:
41
+ """Execute the monitor command using unified monitoring daemon."""
42
+ try:
43
+ self.logger.info("Monitor command using unified monitoring daemon")
44
+
45
+ # Handle default case (no subcommand) - default to status
46
+ if not hasattr(args, "monitor_command") or not args.monitor_command:
47
+ return self._status_monitor(args)
48
+
49
+ # Route to specific monitor commands
50
+ if args.monitor_command == MonitorCommands.START.value:
51
+ return self._start_monitor(args)
52
+ if args.monitor_command == MonitorCommands.STOP.value:
53
+ return self._stop_monitor(args)
54
+ if args.monitor_command == MonitorCommands.RESTART.value:
55
+ return self._restart_monitor(args)
56
+ if args.monitor_command == MonitorCommands.STATUS.value:
57
+ return self._status_monitor(args)
58
+
59
+ return CommandResult.error_result(
60
+ f"Unknown monitor command: {args.monitor_command}"
61
+ )
62
+
63
+ except Exception as e:
64
+ self.logger.error(f"Error executing monitor command: {e}", exc_info=True)
65
+ return CommandResult.error_result(f"Error executing monitor command: {e}")
66
+
67
+ def _start_monitor(self, args) -> CommandResult:
68
+ """Start the unified monitor daemon."""
69
+ port = getattr(args, "port", None)
70
+ if port is None:
71
+ port = 8765 # Default to 8765 for unified monitor
72
+ host = getattr(args, "host", "localhost")
73
+
74
+ # Check for explicit foreground flag first, then background flag
75
+ # Default to daemon/background mode if neither specified
76
+ if getattr(args, "foreground", False):
77
+ daemon_mode = False
78
+ elif getattr(args, "background", None) is not None:
79
+ daemon_mode = getattr(args, "background", False)
80
+ else:
81
+ # Default to daemon/background mode
82
+ daemon_mode = True
83
+
84
+ mode_str = "background/daemon" if daemon_mode else "foreground"
85
+ self.logger.info(
86
+ f"Starting unified monitor daemon on {host}:{port} (mode: {mode_str})"
87
+ )
88
+
89
+ # Create unified monitor daemon
90
+ self.daemon = UnifiedMonitorDaemon(
91
+ host=host, port=port, daemon_mode=daemon_mode
92
+ )
93
+
94
+ # Check if already running
95
+ if self.daemon.lifecycle.is_running():
96
+ existing_pid = self.daemon.lifecycle.get_pid()
97
+ return CommandResult.success_result(
98
+ f"Unified monitor daemon already running with PID {existing_pid}",
99
+ data={
100
+ "url": f"http://{host}:{port}",
101
+ "port": port,
102
+ "pid": existing_pid,
103
+ },
104
+ )
105
+
106
+ # Start the daemon
107
+ if self.daemon.start():
108
+ mode_info = " in background" if daemon_mode else " in foreground"
109
+ return CommandResult.success_result(
110
+ f"Unified monitor daemon started on {host}:{port}{mode_info}",
111
+ data={"url": f"http://{host}:{port}", "port": port, "mode": mode_str},
112
+ )
113
+ return CommandResult.error_result("Failed to start unified monitor daemon")
114
+
115
+ def _stop_monitor(self, args) -> CommandResult:
116
+ """Stop the unified monitor daemon."""
117
+ self.logger.info("Stopping unified monitor daemon")
118
+
119
+ # Create daemon instance to check status and stop
120
+ daemon = UnifiedMonitorDaemon()
121
+
122
+ if not daemon.lifecycle.is_running():
123
+ return CommandResult.success_result("No unified monitor daemon running")
124
+
125
+ # Stop the daemon by PID (works for both daemon and foreground mode)
126
+ if daemon.lifecycle.stop_daemon():
127
+ return CommandResult.success_result("Unified monitor daemon stopped")
128
+ return CommandResult.error_result("Failed to stop unified monitor daemon")
129
+
130
+ def _restart_monitor(self, args) -> CommandResult:
131
+ """Restart the unified monitor daemon."""
132
+ self.logger.info("Restarting unified monitor daemon")
133
+
134
+ # Create daemon instance
135
+ daemon = UnifiedMonitorDaemon()
136
+
137
+ # Restart the daemon
138
+ if daemon.restart():
139
+ return CommandResult.success_result("Unified monitor daemon restarted")
140
+ return CommandResult.error_result("Failed to restart unified monitor daemon")
141
+
142
+ def _status_monitor(self, args) -> CommandResult:
143
+ """Get unified monitor daemon status."""
144
+ verbose = getattr(args, "verbose", False)
145
+
146
+ # Create daemon instance to check status
147
+ daemon = UnifiedMonitorDaemon()
148
+ status_data = daemon.status()
149
+
150
+ # Format output message
151
+ if status_data["running"]:
152
+ message = f"Unified monitor daemon is running at http://{status_data['host']}:{status_data['port']}"
153
+ if status_data.get("pid"):
154
+ message += f" (PID: {status_data['pid']})"
155
+ else:
156
+ message = "Unified monitor daemon is not running"
157
+
158
+ return CommandResult.success_result(message, data=status_data)
159
+
160
+
161
+ def manage_monitor(args):
162
+ """
163
+ Main entry point for monitor command.
164
+
165
+ The monitor command manages the unified monitoring daemon that provides
166
+ a single stable way to launch all monitoring functionality including
167
+ HTTP dashboard, Socket.IO events, real AST analysis, and Claude Code hooks.
168
+ """
169
+ command = MonitorCommand()
170
+ error = command.validate_args(args)
171
+
172
+ if error:
173
+ command.logger.error(error)
174
+ print(f"Error: {error}")
175
+ return 1
176
+
177
+ result = command.run(args)
178
+
179
+ if result.success:
180
+ if result.message:
181
+ print(result.message)
182
+ if result.data and getattr(args, "verbose", False):
183
+ import json
184
+
185
+ print(json.dumps(result.data, indent=2))
186
+ return 0
187
+ if result.message:
188
+ print(f"Error: {result.message}")
189
+ return 1
@@ -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):