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.
- claude_mpm-4.2.12/BUILD_NUMBER +1 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/PKG-INFO +1 -1
- claude_mpm-4.2.12/VERSION +1 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/pyproject.toml +2 -2
- claude_mpm-4.2.12/src/claude_mpm/VERSION +1 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/dashboard.py +59 -126
- claude_mpm-4.2.12/src/claude_mpm/cli/commands/monitor.py +189 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/run.py +33 -33
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/monitor_parser.py +12 -2
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/code-tree.css +8 -16
- claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/code-tree.js +2 -0
- claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/file-viewer.js +2 -0
- claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
- claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +2 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/dashboard.js +1 -1
- claude_mpm-4.2.12/src/claude_mpm/dashboard/static/dist/socket-client.js +2 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/code-tree.js +692 -114
- claude_mpm-4.2.12/src/claude_mpm/dashboard/static/js/components/file-viewer.js +538 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/module-viewer.js +26 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/unified-data-viewer.js +166 -14
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/dashboard.js +108 -91
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/socket-client.js +9 -7
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/templates/index.html +2 -7
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +1 -11
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/connection_manager.py +54 -59
- claude_mpm-4.2.12/src/claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +230 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_template_builder.py +0 -1
- claude_mpm-4.2.12/src/claude_mpm/services/cli/unified_dashboard_manager.py +354 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/__init__.py +20 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/daemon.py +378 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/event_emitter.py +342 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/__init__.py +20 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/code_analysis.py +334 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/dashboard.py +298 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/handlers/hooks.py +491 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/management/__init__.py +18 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/management/health.py +124 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/management/lifecycle.py +338 -0
- claude_mpm-4.2.12/src/claude_mpm/services/monitor/server.py +596 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/code_tree_analyzer.py +33 -17
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/PKG-INFO +1 -1
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/SOURCES.txt +14 -9
- claude_mpm-4.2.9/BUILD_NUMBER +0 -1
- claude_mpm-4.2.9/VERSION +0 -1
- claude_mpm-4.2.9/src/claude_mpm/VERSION +0 -1
- claude_mpm-4.2.9/src/claude_mpm/cli/commands/monitor.py +0 -319
- claude_mpm-4.2.9/src/claude_mpm/cli/commands/socketio_monitor.py +0 -233
- claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm-4.2.9/src/claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm-4.2.9/src/claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +0 -190
- claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_daemon.py +0 -571
- claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_daemon_hardened.py +0 -937
- claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_daemon_wrapper.py +0 -78
- claude_mpm-4.2.9/src/claude_mpm/scripts/socketio_server_manager.py +0 -349
- claude_mpm-4.2.9/src/claude_mpm/services/cli/dashboard_launcher.py +0 -423
- claude_mpm-4.2.9/src/claude_mpm/services/cli/socketio_manager.py +0 -595
- claude_mpm-4.2.9/src/claude_mpm/services/dashboard/stable_server.py +0 -1020
- claude_mpm-4.2.9/src/claude_mpm/services/socketio/monitor_server.py +0 -505
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/CLAUDE.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/LICENSE +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/MANIFEST.in +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/README.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/scripts/ticket +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/setup.cfg +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/BUILD_NUMBER +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/__main__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_DOCUMENTATION.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_ENGINEER.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_OPS.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_PM.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_QA.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/BASE_RESEARCH.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/INSTRUCTIONS.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/MEMORY.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/OUTPUT_STYLE.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/WORKFLOW.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agent-template.yaml +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agent_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/agents_metadata.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/async_agent_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/base_agent.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/base_agent_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/frontmatter_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/system_agent_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/agent-manager.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/agent-manager.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/agentic_coder_optimizer.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/api_qa.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/code_analyzer.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/data_engineer.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/documentation.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/engineer.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/gcp_ops_agent.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/imagemagick.json +0 -0
- {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
- {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
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/memory_manager.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/ops.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/project_organizer.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/qa.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/refactoring_engineer.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/research.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/security.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/test-non-mpm.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/ticketing.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/vercel_ops_agent.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/version_control.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/web_qa.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/agents/templates/web_ui.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/__main__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/agent_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/agents.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/aggregate.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/analyze.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/analyze_code.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/cleanup.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/cleanup_orphaned_agents.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/configure.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/configure_tui.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/debug.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/doctor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/info.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_command_router.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_config_commands.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_install_commands.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_pipx_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_server_commands.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mcp_tool_commands.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/memory.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mpm_init.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/mpm_init_handler.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/commands/tickets.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/agent_manager_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/agents_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/analyze_code_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/analyze_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/base_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/config_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/configure_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/dashboard_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/debug_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/mcp_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/memory_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/mpm_init_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/run_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/parsers/tickets_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/argument_patterns.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/base_command.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/error_handling.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/shared/output_formatters.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/startup_logging.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/ticket_cli.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli/utils.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/args.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/commands.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/cli_module/migration_example.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-agents.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-config.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-doctor.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-help.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-init.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-status.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm-tickets.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/commands/mpm.md +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/agent_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/experimental_features.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/paths.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/config/socketio_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/constants.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/agent_registry.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/agent_session_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/base_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/cache.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/claude_runner.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/config_aliases.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/config_constants.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/constants.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/container.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/exceptions.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/factories.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/framework_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/hook_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/hook_performance_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/injectable_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/instruction_reinforcement_hook.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/interactive_session.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/interfaces.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/lazy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/log_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/logger.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/logging_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/mixins.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/oneshot_session.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/optimized_agent_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/optimized_startup.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/output_style_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/service_registry.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/session_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/config_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/path_resolver.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/shared/singleton_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/socketio_pool.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/tool_access_control.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/types.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/typing_utils.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/unified_agent_registry.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/unified_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/core/unified_paths.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/analysis_runner.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/api/simple_directory.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/index.html +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/open_dashboard.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/activity-tree.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/agent-inference.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/code-tree.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/code-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/event-processor.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/event-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/export-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/hud-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/module-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/session-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/socket-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/components/working-directory.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/dashboard.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/built/socket-client.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/activity.css +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/connection-status.css +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/css/dashboard.css +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/event-processor.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/export-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/session-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/dist/components/working-directory.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/activity-tree.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/agent-inference.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/build-tracker.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/code-simple.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/code-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/connection-debug.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/event-processor.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/event-viewer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/export-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/hud-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/session-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/socket-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/components/working-directory.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/connection-manager.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/js/extension-error-handler.js +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/test-simple.html +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/static/test_debug.html +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/templates/code_simple.html +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/dashboard/test_dashboard.html +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/experimental/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/generators/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/base_hook.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/connection_pool.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/event_handlers.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/installer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/memory_integration.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/response_tracking.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/duplicate_detector.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/state_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/services/subagent_processor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/claude_hooks/tool_analysis.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/memory_integration_hook.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/hooks/validation_hooks.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/init.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/models/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/models/agent_definition.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/models/agent_session.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/schemas/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/claude-hook-handler.sh +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/mcp_server.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/mcp_wrapper.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/mpm_doctor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/scripts/start_activity_logging.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agent_capabilities_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/agent_builder.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_config_provider.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_configuration_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_definition_factory.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_deployment.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_discovery_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_environment_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_filesystem_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_format_converter.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_metrics_collector.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_operation_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_record_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_restore_handler.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_state_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_version_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agent_versioning.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/agents_directory_resolver.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/async_agent_deployment.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/base_agent_locator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/config/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/config/deployment_config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/config/deployment_config_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_config_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_results_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_type_detector.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/deployment_wrapper.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/deployment_executor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/deployment_facade.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/interface_adapter.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/lifecycle_health_checker.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/multi_source_deployment_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/processors/agent_processor.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/results/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/results/deployment_metrics.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/results/deployment_result_builder.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/single_agent_deployer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/base_strategy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/project_strategy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/strategy_selector.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/system_strategy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/strategies/user_strategy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/system_instructions_deployer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/agent_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/deployment_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/template_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/deployment/validation/validation_result.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/agent_profile_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/base_agent_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/loading/framework_agent_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/management/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/management/agent_capabilities_generator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/management/agent_management_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/agent_memory_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/agent_persistence_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/content_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_categorization_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_file_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_format_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/memory_limits_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/memory/template_generator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/registry/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/registry/deployed_agent_discovery.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/agents/registry/modification_tracker.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/async_session_logger.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/claude_session_logger.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_cleanup_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_dependency_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_listing_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_output_formatter.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/agent_validation_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/memory_crud_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/memory_output_formatter.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/session_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/cli/startup_checker.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/command_deployment_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/command_handler_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/communication/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/cache_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/agent.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/communication.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/infrastructure.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces/service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/interfaces.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/memory_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/path_resolver.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/service_container.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/core/service_interfaces.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/agent_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/base_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/claude_desktop_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/common_issues_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/configuration_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/filesystem_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/installation_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/instructions_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/mcp_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/monitor_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/checks/startup_log_check.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/diagnostic_runner.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/doctor_reporter.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/diagnostics/models.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_aggregator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/config.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/direct_relay.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/event_bus.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/event_bus/relay.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/dead_letter.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/logging.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/metrics.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/consumers/socketio.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/core.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/interfaces.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/producers/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/producers/hook.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/events/producers/system.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/exceptions.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
- {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
- {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
- {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
- {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
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
- {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
- {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
- {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
- {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
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/hook_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/context_preservation.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/daemon_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/logging.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/aggregator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/legacy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/network.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/process.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/resources.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring/service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/infrastructure/monitoring.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/auto_configure.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/config_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/config_schema.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/config/configuration.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/exceptions.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/interfaces.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/process_pool.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/main.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/registry/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/builder.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/cache/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/cache/shared_prompt_cache.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/cache/simple_cache.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/indexed_memory.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/optimizer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory/router.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/memory_hook_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/monitor_build_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/port_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/analyzer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/analyzer_refactored.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/analyzer_v2.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/architecture_analyzer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/dependency_analyzer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/language_analyzer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/metrics_collector.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/project/registry.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/recovery_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/response_tracker.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/runner_configuration_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/session_management_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/async_service_base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/config_service_base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/lifecycle_service_base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/manager_base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/shared/service_factory.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/client_proxy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/dashboard_server.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/event_normalizer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/base.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/code_analysis.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/connection.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/connection_handler.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/file.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/git.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/hook.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/memory.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/project.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/handlers/registry.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/migration_utils.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/monitor_client.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/broadcaster.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/connection_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/core.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/eventbus_integration.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio/server/main.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio_client_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/socketio_server.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/subprocess_launcher_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/system_instructions_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/crud_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/formatter_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/search_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/validation_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/ticket_services/workflow_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/utility_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/git_operations.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_control/version_parser.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/version_service.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/visualization/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/services/visualization/mermaid_generator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/storage/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/storage/state_storage.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/ticket_wrapper.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/__main__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/code_tree_builder.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/code_tree_events.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/tools/socketio_debug.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/agent_dependency_loader.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/config_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/console.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/dependency_cache.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/dependency_manager.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/dependency_strategies.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/environment_context.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/error_handler.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/file_utils.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/framework_detection.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/import_migration_example.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/imports.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/path_operations.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/robust_installer.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/session_logging.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/utils/subprocess_utils.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/validation/__init__.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/validation/agent_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm/validation/frontmatter_validator.py +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/entry_points.txt +0 -0
- {claude_mpm-4.2.9 → claude_mpm-4.2.12}/src/claude_mpm.egg-info/requires.txt +0 -0
- {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
|
|
@@ -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.
|
|
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.
|
|
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
|
|
8
|
+
- Use UnifiedMonitorDaemon for integrated dashboard and monitoring
|
|
9
9
|
- Support both foreground and background operation modes
|
|
10
|
-
- Integrate with
|
|
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.
|
|
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.
|
|
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.
|
|
83
|
-
dashboard_url = self.
|
|
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
|
|
91
|
-
success, browser_opened = self.
|
|
92
|
-
port=port,
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
110
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
287
|
-
port=port,
|
|
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.
|
|
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.
|
|
302
|
-
if self.
|
|
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
|
-
|
|
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
|
|
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
|
|
432
|
-
|
|
432
|
+
# Use UnifiedDashboardManager for server management
|
|
433
|
+
dashboard_manager = UnifiedDashboardManager(self.logger)
|
|
433
434
|
|
|
434
435
|
# Check dependencies
|
|
435
|
-
deps_ok, error_msg =
|
|
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 =
|
|
444
|
-
success, server_info =
|
|
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
|
|
455
|
-
|
|
456
|
-
monitor_url =
|
|
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 =
|
|
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
|
|
859
|
-
|
|
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 =
|
|
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 =
|
|
878
|
-
success, server_info =
|
|
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
|
|
890
|
-
|
|
891
|
-
monitor_url =
|
|
892
|
-
browser_opened =
|
|
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
|
|
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
|
-
|
|
978
|
-
success, server_info =
|
|
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
|
|
982
|
-
|
|
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
|
-
|
|
992
|
-
return
|
|
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
|
-
|
|
998
|
-
success, _ =
|
|
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
|
-
|
|
1005
|
-
return
|
|
1004
|
+
manager = UnifiedDashboardManager(logger)
|
|
1005
|
+
return manager.open_browser(url)
|
|
1006
1006
|
|
|
1007
1007
|
|
|
1008
1008
|
def _check_claude_json_memory(args, logger):
|