claude-mpm 4.1.26__py3-none-any.whl → 5.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- claude_mpm/BUILD_NUMBER +1 -1
- claude_mpm/VERSION +1 -1
- claude_mpm/__init__.py +20 -5
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +118 -0
- claude_mpm/agents/BASE_DOCUMENTATION.md +53 -0
- claude_mpm/agents/BASE_ENGINEER.md +658 -0
- claude_mpm/agents/BASE_OPS.md +219 -0
- claude_mpm/agents/BASE_PM.md +432 -158
- claude_mpm/agents/BASE_PROMPT_ENGINEER.md +787 -0
- claude_mpm/agents/BASE_QA.md +167 -0
- claude_mpm/agents/BASE_RESEARCH.md +53 -0
- claude_mpm/agents/OUTPUT_STYLE.md +254 -29
- claude_mpm/agents/PM_INSTRUCTIONS.md +969 -0
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +355 -191
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +41 -14
- claude_mpm/agents/agent_loader_integration.py +3 -2
- claude_mpm/agents/async_agent_loader.py +3 -3
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +21 -44
- claude_mpm/agents/frontmatter_validator.py +292 -252
- claude_mpm/agents/system_agent_config.py +3 -2
- claude_mpm/agents/templates/README.md +465 -0
- claude_mpm/agents/templates/circuit-breakers.md +1005 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/git-file-tracking.md +584 -0
- claude_mpm/agents/templates/pm-examples.md +474 -0
- claude_mpm/agents/templates/pm-red-flags.md +310 -0
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/response-format.md +583 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/agents/templates/validation-templates.md +312 -0
- claude_mpm/cli/__init__.py +72 -376
- claude_mpm/cli/commands/__init__.py +4 -0
- claude_mpm/cli/commands/agent_manager.py +675 -20
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +344 -0
- claude_mpm/cli/commands/agents.py +1673 -178
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_detect.py +380 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/agents_recommend.py +309 -0
- claude_mpm/cli/commands/aggregate.py +11 -7
- claude_mpm/cli/commands/analyze.py +18 -13
- claude_mpm/cli/commands/analyze_code.py +8 -4
- claude_mpm/cli/commands/auto_configure.py +566 -0
- claude_mpm/cli/commands/cleanup.py +12 -12
- claude_mpm/cli/commands/config.py +54 -17
- claude_mpm/cli/commands/configure.py +1184 -1055
- claude_mpm/cli/commands/configure_agent_display.py +261 -0
- claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
- claude_mpm/cli/commands/configure_hook_manager.py +225 -0
- claude_mpm/cli/commands/configure_models.py +18 -0
- claude_mpm/cli/commands/configure_navigation.py +184 -0
- claude_mpm/cli/commands/configure_paths.py +104 -0
- claude_mpm/cli/commands/configure_persistence.py +254 -0
- claude_mpm/cli/commands/configure_startup_manager.py +646 -0
- claude_mpm/cli/commands/configure_template_editor.py +497 -0
- claude_mpm/cli/commands/configure_validators.py +73 -0
- claude_mpm/cli/commands/dashboard.py +50 -52
- claude_mpm/cli/commands/debug.py +19 -19
- claude_mpm/cli/commands/doctor.py +51 -7
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/info.py +3 -4
- claude_mpm/cli/commands/local_deploy.py +534 -0
- claude_mpm/cli/commands/mcp.py +17 -10
- claude_mpm/cli/commands/mcp_command_router.py +11 -0
- claude_mpm/cli/commands/mcp_config.py +154 -0
- claude_mpm/cli/commands/mcp_external_commands.py +249 -0
- claude_mpm/cli/commands/mcp_install_commands.py +101 -32
- claude_mpm/cli/commands/mcp_pipx_config.py +2 -2
- claude_mpm/cli/commands/mcp_setup_external.py +868 -0
- claude_mpm/cli/commands/memory.py +55 -21
- claude_mpm/cli/commands/monitor.py +160 -70
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +114 -4
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +252 -167
- claude_mpm/cli/commands/search.py +458 -0
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +1225 -0
- claude_mpm/cli/commands/uninstall.py +176 -0
- claude_mpm/cli/commands/upgrade.py +152 -0
- claude_mpm/cli/commands/verify.py +119 -0
- claude_mpm/cli/executor.py +279 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +21 -0
- claude_mpm/cli/interactive/agent_wizard.py +1872 -0
- claude_mpm/cli/interactive/skills_wizard.py +491 -0
- claude_mpm/cli/parser.py +79 -2
- claude_mpm/cli/parsers/__init__.py +7 -1
- claude_mpm/cli/parsers/agent_manager_parser.py +161 -1
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +369 -1
- claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
- claude_mpm/cli/parsers/base_parser.py +196 -3
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/configure_parser.py +11 -15
- claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
- claude_mpm/cli/parsers/mcp_parser.py +15 -0
- claude_mpm/cli/parsers/monitor_parser.py +12 -2
- claude_mpm/cli/parsers/mpm_init_parser.py +179 -9
- claude_mpm/cli/parsers/run_parser.py +5 -0
- claude_mpm/cli/parsers/search_parser.py +245 -0
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +282 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/shared/argument_patterns.py +20 -13
- claude_mpm/cli/shared/base_command.py +2 -2
- claude_mpm/cli/shared/output_formatters.py +28 -19
- claude_mpm/cli/startup.py +994 -0
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/startup_logging.py +179 -13
- claude_mpm/cli/utils.py +54 -3
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/mpm-agents-auto-configure.md +278 -0
- claude_mpm/commands/mpm-agents-detect.md +177 -0
- claude_mpm/commands/mpm-agents-list.md +131 -0
- claude_mpm/commands/mpm-agents-recommend.md +223 -0
- claude_mpm/commands/mpm-config-view.md +150 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +297 -5
- claude_mpm/commands/mpm-init.md +401 -17
- claude_mpm/commands/mpm-monitor.md +418 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/mpm-session-resume.md +381 -0
- claude_mpm/commands/mpm-status.md +79 -8
- claude_mpm/commands/mpm-ticket-organize.md +304 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +122 -0
- claude_mpm/commands/mpm.md +12 -0
- claude_mpm/config/agent_config.py +4 -4
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/experimental_features.py +7 -7
- claude_mpm/config/model_config.py +428 -0
- claude_mpm/config/paths.py +3 -2
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/config/socketio_config.py +3 -3
- claude_mpm/constants.py +28 -1
- claude_mpm/core/__init__.py +53 -17
- claude_mpm/core/agent_name_normalizer.py +3 -2
- claude_mpm/core/agent_registry.py +2 -2
- claude_mpm/core/agent_session_manager.py +10 -10
- claude_mpm/core/api_validator.py +330 -0
- claude_mpm/core/base_service.py +33 -23
- claude_mpm/core/cache.py +9 -9
- claude_mpm/core/claude_runner.py +24 -42
- claude_mpm/core/config.py +101 -8
- claude_mpm/core/config_aliases.py +7 -6
- claude_mpm/core/constants.py +66 -1
- claude_mpm/core/container.py +11 -5
- claude_mpm/core/enums.py +452 -0
- claude_mpm/core/error_handler.py +623 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/file_utils.py +764 -0
- claude_mpm/core/framework/__init__.py +25 -0
- claude_mpm/core/framework/formatters/__init__.py +11 -0
- claude_mpm/core/framework/formatters/capability_generator.py +367 -0
- claude_mpm/core/framework/formatters/content_formatter.py +288 -0
- claude_mpm/core/framework/formatters/context_generator.py +185 -0
- claude_mpm/core/framework/loaders/__init__.py +13 -0
- claude_mpm/core/framework/loaders/agent_loader.py +210 -0
- claude_mpm/core/framework/loaders/file_loader.py +176 -0
- claude_mpm/core/framework/loaders/instruction_loader.py +181 -0
- claude_mpm/core/framework/loaders/packaged_loader.py +232 -0
- claude_mpm/core/framework/processors/__init__.py +11 -0
- claude_mpm/core/framework/processors/memory_processor.py +230 -0
- claude_mpm/core/framework/processors/metadata_processor.py +146 -0
- claude_mpm/core/framework/processors/template_processor.py +244 -0
- claude_mpm/core/framework_loader.py +321 -1631
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +49 -8
- claude_mpm/core/injectable_service.py +11 -8
- claude_mpm/core/instruction_reinforcement_hook.py +4 -3
- claude_mpm/core/interactive_session.py +146 -18
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/lazy.py +3 -3
- claude_mpm/core/log_manager.py +92 -23
- claude_mpm/core/logger.py +22 -15
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/logging_utils.py +520 -0
- claude_mpm/core/oneshot_session.py +122 -15
- claude_mpm/core/optimized_agent_loader.py +9 -9
- claude_mpm/core/optimized_startup.py +1 -1
- claude_mpm/core/output_style_manager.py +12 -192
- claude_mpm/core/pm_hook_interceptor.py +18 -12
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/service_registry.py +7 -3
- claude_mpm/core/session_manager.py +14 -12
- claude_mpm/core/shared/config_loader.py +1 -1
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/socketio_pool.py +15 -15
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/tool_access_control.py +3 -2
- claude_mpm/core/types.py +4 -11
- claude_mpm/core/typing_utils.py +7 -6
- claude_mpm/core/unified_agent_registry.py +115 -11
- claude_mpm/core/unified_config.py +6 -6
- claude_mpm/core/unified_paths.py +23 -20
- claude_mpm/dashboard/analysis_runner.py +4 -4
- claude_mpm/dashboard/api/simple_directory.py +261 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +600 -18
- claude_mpm/dashboard/static/js/components/activity-tree.js +181 -195
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +105 -102
- claude_mpm/dashboard/static/js/components/agent-inference.js +34 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +67 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +857 -0
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +891 -0
- claude_mpm/dashboard/static/js/components/event-processor.js +3 -0
- claude_mpm/dashboard/static/js/components/event-viewer.js +50 -13
- claude_mpm/dashboard/static/js/components/export-manager.js +3 -0
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +443 -0
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +690 -0
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +36 -16
- claude_mpm/dashboard/static/js/components/file-viewer.js +580 -0
- claude_mpm/dashboard/static/js/components/module-viewer.js +49 -23
- claude_mpm/dashboard/static/js/components/session-manager.js +19 -19
- claude_mpm/dashboard/static/js/components/socket-manager.js +5 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +356 -41
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +520 -88
- claude_mpm/dashboard/static/js/components/working-directory.js +46 -11
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +309 -178
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +183 -139
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +185 -0
- claude_mpm/dashboard/static/socket.io.min.js +7 -0
- claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +7 -0
- claude_mpm/dashboard/templates/code_simple.html +153 -0
- claude_mpm/dashboard/templates/index.html +125 -122
- claude_mpm/experimental/cli_enhancements.py +5 -7
- claude_mpm/generators/agent_profile_generator.py +5 -3
- claude_mpm/hooks/__init__.py +37 -1
- claude_mpm/hooks/base_hook.py +5 -4
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/connection_pool.py +4 -4
- claude_mpm/hooks/claude_hooks/event_handlers.py +24 -19
- claude_mpm/hooks/claude_hooks/hook_handler.py +29 -22
- claude_mpm/hooks/claude_hooks/installer.py +67 -22
- claude_mpm/hooks/claude_hooks/memory_integration.py +3 -3
- claude_mpm/hooks/claude_hooks/response_tracking.py +57 -17
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +62 -64
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +140 -76
- claude_mpm/hooks/claude_hooks/services/state_manager.py +11 -9
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +3 -3
- claude_mpm/hooks/failure_learning/__init__.py +54 -0
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +230 -0
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +212 -0
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +281 -0
- claude_mpm/hooks/instruction_reinforcement.py +301 -0
- claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
- claude_mpm/hooks/kuzu_memory_hook.py +386 -0
- claude_mpm/hooks/kuzu_response_hook.py +179 -0
- claude_mpm/hooks/memory_integration_hook.py +1 -1
- claude_mpm/hooks/session_resume_hook.py +121 -0
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/hooks/tool_call_interceptor.py +8 -5
- claude_mpm/hooks/validation_hooks.py +3 -3
- claude_mpm/init.py +23 -4
- claude_mpm/models/agent_session.py +8 -6
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/scripts/claude-hook-handler.sh +35 -9
- claude_mpm/scripts/launch_monitor.py +85 -0
- claude_mpm/scripts/mcp_server.py +3 -5
- claude_mpm/scripts/mpm_doctor.py +3 -2
- claude_mpm/scripts/socketio_daemon.py +159 -512
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/__init__.py +144 -160
- claude_mpm/services/agents/__init__.py +18 -5
- claude_mpm/services/agents/agent_builder.py +56 -18
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_config_manager.py +796 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_deployment.py +164 -17
- claude_mpm/services/agents/deployment/agent_discovery_service.py +191 -41
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +5 -5
- claude_mpm/services/agents/deployment/agent_format_converter.py +56 -12
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +5 -7
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_operation_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_record_service.py +4 -4
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_state_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_template_builder.py +939 -50
- claude_mpm/services/agents/deployment/agent_validator.py +31 -7
- claude_mpm/services/agents/deployment/agent_version_manager.py +8 -5
- claude_mpm/services/agents/deployment/agent_versioning.py +1 -1
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +3 -2
- claude_mpm/services/agents/deployment/deployment_config_loader.py +131 -7
- claude_mpm/services/agents/deployment/deployment_type_detector.py +10 -14
- claude_mpm/services/agents/deployment/deployment_wrapper.py +58 -0
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
- claude_mpm/services/agents/deployment/local_template_deployment.py +360 -0
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +249 -53
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +8 -7
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +7 -5
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +10 -10
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -43
- claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/deployment/validation/template_validator.py +64 -44
- claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/agent_profile_loader.py +10 -9
- claude_mpm/services/agents/loading/base_agent_manager.py +16 -6
- claude_mpm/services/agents/loading/framework_agent_loader.py +11 -14
- claude_mpm/services/agents/local_template_manager.py +784 -0
- claude_mpm/services/agents/management/agent_capabilities_generator.py +3 -2
- claude_mpm/services/agents/management/agent_management_service.py +5 -5
- claude_mpm/services/agents/memory/agent_memory_manager.py +32 -29
- claude_mpm/services/agents/memory/content_manager.py +17 -9
- claude_mpm/services/agents/memory/memory_categorization_service.py +4 -2
- claude_mpm/services/agents/memory/memory_file_service.py +32 -6
- claude_mpm/services/agents/memory/memory_format_service.py +6 -4
- claude_mpm/services/agents/memory/memory_limits_service.py +4 -2
- claude_mpm/services/agents/memory/template_generator.py +3 -3
- claude_mpm/services/agents/observers.py +547 -0
- claude_mpm/services/agents/recommender.py +615 -0
- claude_mpm/services/agents/registry/deployed_agent_discovery.py +3 -3
- claude_mpm/services/agents/registry/modification_tracker.py +30 -19
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/async_session_logger.py +141 -98
- claude_mpm/services/claude_session_logger.py +82 -74
- claude_mpm/services/cli/agent_cleanup_service.py +5 -0
- claude_mpm/services/cli/agent_listing_service.py +5 -5
- claude_mpm/services/cli/agent_validation_service.py +3 -1
- claude_mpm/services/cli/memory_crud_service.py +12 -7
- claude_mpm/services/cli/memory_output_formatter.py +2 -2
- claude_mpm/services/cli/resume_service.py +617 -0
- claude_mpm/services/cli/session_manager.py +104 -13
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +372 -0
- claude_mpm/services/cli/startup_checker.py +13 -10
- claude_mpm/services/cli/unified_dashboard_manager.py +439 -0
- claude_mpm/services/command_deployment_service.py +209 -13
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/__init__.py +33 -1
- claude_mpm/services/core/base.py +31 -11
- claude_mpm/services/core/interfaces/__init__.py +88 -3
- claude_mpm/services/core/interfaces/agent.py +184 -0
- claude_mpm/services/core/interfaces/health.py +169 -0
- claude_mpm/services/core/interfaces/model.py +281 -0
- claude_mpm/services/core/interfaces/process.py +372 -0
- claude_mpm/services/core/interfaces/project.py +121 -0
- claude_mpm/services/core/interfaces/restart.py +307 -0
- claude_mpm/services/core/interfaces/stability.py +260 -0
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/memory_manager.py +92 -47
- claude_mpm/services/core/models/__init__.py +70 -0
- claude_mpm/services/core/models/agent_config.py +384 -0
- claude_mpm/services/core/models/health.py +162 -0
- claude_mpm/services/core/models/process.py +239 -0
- claude_mpm/services/core/models/restart.py +302 -0
- claude_mpm/services/core/models/stability.py +264 -0
- claude_mpm/services/core/models/toolchain.py +306 -0
- claude_mpm/services/core/path_resolver.py +36 -14
- claude_mpm/services/diagnostics/__init__.py +2 -2
- claude_mpm/services/diagnostics/checks/__init__.py +8 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +30 -34
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/claude_code_check.py +270 -0
- claude_mpm/services/diagnostics/checks/common_issues_check.py +28 -27
- claude_mpm/services/diagnostics/checks/configuration_check.py +26 -25
- claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
- claude_mpm/services/diagnostics/checks/installation_check.py +165 -60
- claude_mpm/services/diagnostics/checks/instructions_check.py +21 -21
- claude_mpm/services/diagnostics/checks/mcp_check.py +57 -44
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +1058 -0
- claude_mpm/services/diagnostics/checks/monitor_check.py +24 -24
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/checks/startup_log_check.py +14 -11
- claude_mpm/services/diagnostics/diagnostic_runner.py +31 -13
- claude_mpm/services/diagnostics/doctor_reporter.py +305 -47
- claude_mpm/services/diagnostics/models.py +37 -21
- claude_mpm/services/event_aggregator.py +5 -3
- claude_mpm/services/event_bus/direct_relay.py +11 -7
- claude_mpm/services/event_bus/event_bus.py +51 -9
- claude_mpm/services/event_bus/relay.py +33 -14
- claude_mpm/services/events/consumers/dead_letter.py +7 -5
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/events/core.py +5 -6
- claude_mpm/services/events/producers/hook.py +6 -6
- claude_mpm/services/events/producers/system.py +8 -8
- claude_mpm/services/exceptions.py +5 -5
- claude_mpm/services/framework_claude_md_generator/__init__.py +1 -1
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +5 -5
- claude_mpm/services/framework_claude_md_generator/content_validator.py +2 -2
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +3 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +2 -2
- claude_mpm/services/framework_claude_md_generator/version_manager.py +1 -1
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/hook_installer_service.py +506 -0
- claude_mpm/services/hook_service.py +5 -6
- claude_mpm/services/infrastructure/context_preservation.py +13 -11
- claude_mpm/services/infrastructure/daemon_manager.py +9 -9
- claude_mpm/services/infrastructure/logging.py +2 -2
- claude_mpm/services/infrastructure/monitoring/__init__.py +2 -6
- claude_mpm/services/infrastructure/monitoring/aggregator.py +13 -18
- claude_mpm/services/infrastructure/monitoring/base.py +5 -13
- claude_mpm/services/infrastructure/monitoring/network.py +7 -6
- claude_mpm/services/infrastructure/monitoring/process.py +13 -12
- claude_mpm/services/infrastructure/monitoring/resources.py +8 -7
- claude_mpm/services/infrastructure/monitoring/service.py +16 -15
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +155 -0
- claude_mpm/services/local_ops/crash_detector.py +257 -0
- claude_mpm/services/local_ops/health_checks/__init__.py +26 -0
- claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
- claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
- claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
- claude_mpm/services/local_ops/health_manager.py +427 -0
- claude_mpm/services/local_ops/log_monitor.py +396 -0
- claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
- claude_mpm/services/local_ops/process_manager.py +595 -0
- claude_mpm/services/local_ops/resource_monitor.py +331 -0
- claude_mpm/services/local_ops/restart_manager.py +401 -0
- claude_mpm/services/local_ops/restart_policy.py +387 -0
- claude_mpm/services/local_ops/state_manager.py +372 -0
- claude_mpm/services/local_ops/unified_manager.py +600 -0
- claude_mpm/services/mcp_config_manager.py +1542 -0
- claude_mpm/services/mcp_gateway/__init__.py +97 -93
- claude_mpm/services/mcp_gateway/auto_configure.py +43 -38
- claude_mpm/services/mcp_gateway/config/config_loader.py +3 -3
- claude_mpm/services/mcp_gateway/config/configuration.py +24 -5
- claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
- claude_mpm/services/mcp_gateway/core/base.py +20 -33
- claude_mpm/services/mcp_gateway/core/process_pool.py +591 -31
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +2 -2
- claude_mpm/services/mcp_gateway/core/startup_verification.py +3 -3
- claude_mpm/services/mcp_gateway/main.py +90 -15
- claude_mpm/services/mcp_gateway/registry/service_registry.py +4 -2
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +12 -9
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +5 -10
- claude_mpm/services/mcp_gateway/server/stdio_server.py +9 -17
- claude_mpm/services/mcp_gateway/tools/__init__.py +14 -2
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +15 -15
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +10 -9
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +654 -0
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +36 -34
- claude_mpm/services/mcp_gateway/tools/hello_world.py +8 -8
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +555 -0
- claude_mpm/services/mcp_gateway/utils/__init__.py +14 -0
- claude_mpm/services/mcp_gateway/utils/package_version_checker.py +160 -0
- claude_mpm/services/mcp_gateway/utils/update_preferences.py +170 -0
- claude_mpm/services/mcp_service_verifier.py +732 -0
- claude_mpm/services/memory/builder.py +9 -8
- claude_mpm/services/memory/cache/shared_prompt_cache.py +2 -1
- claude_mpm/services/memory/cache/simple_cache.py +2 -2
- claude_mpm/services/memory/failure_tracker.py +578 -0
- claude_mpm/services/memory/indexed_memory.py +8 -8
- claude_mpm/services/memory/optimizer.py +8 -9
- claude_mpm/services/memory/router.py +3 -3
- claude_mpm/services/memory_hook_service.py +165 -4
- claude_mpm/services/model/__init__.py +147 -0
- claude_mpm/services/model/base_provider.py +365 -0
- claude_mpm/services/model/claude_provider.py +412 -0
- claude_mpm/services/model/model_router.py +452 -0
- claude_mpm/services/model/ollama_provider.py +415 -0
- claude_mpm/services/monitor/__init__.py +20 -0
- claude_mpm/services/monitor/daemon.py +691 -0
- claude_mpm/services/monitor/daemon_manager.py +1040 -0
- claude_mpm/services/monitor/event_emitter.py +350 -0
- claude_mpm/services/monitor/handlers/__init__.py +21 -0
- claude_mpm/services/monitor/handlers/code_analysis.py +332 -0
- claude_mpm/services/monitor/handlers/dashboard.py +299 -0
- claude_mpm/services/monitor/handlers/file.py +264 -0
- claude_mpm/services/monitor/handlers/hooks.py +512 -0
- claude_mpm/services/monitor/management/__init__.py +18 -0
- claude_mpm/services/monitor/management/health.py +124 -0
- claude_mpm/services/monitor/management/lifecycle.py +724 -0
- claude_mpm/services/monitor/server.py +817 -0
- claude_mpm/services/monitor_build_service.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/orphan_detection.py +786 -0
- claude_mpm/services/port_manager.py +3 -3
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/__init__.py +23 -0
- claude_mpm/services/project/analyzer.py +3 -3
- claude_mpm/services/project/architecture_analyzer.py +5 -5
- claude_mpm/services/project/archive_manager.py +1045 -0
- claude_mpm/services/project/dependency_analyzer.py +4 -4
- claude_mpm/services/project/detection_strategies.py +719 -0
- claude_mpm/services/project/documentation_manager.py +554 -0
- claude_mpm/services/project/enhanced_analyzer.py +572 -0
- claude_mpm/services/project/metrics_collector.py +4 -4
- claude_mpm/services/project/project_organizer.py +1005 -0
- claude_mpm/services/project/registry.py +13 -7
- claude_mpm/services/project/toolchain_analyzer.py +583 -0
- claude_mpm/services/project_port_allocator.py +596 -0
- claude_mpm/services/response_tracker.py +21 -10
- claude_mpm/services/runner_configuration_service.py +17 -3
- claude_mpm/services/self_upgrade_service.py +500 -0
- claude_mpm/services/session_management_service.py +23 -9
- claude_mpm/services/session_manager.py +380 -0
- claude_mpm/services/shared/__init__.py +2 -1
- claude_mpm/services/shared/async_service_base.py +16 -27
- claude_mpm/services/shared/config_service_base.py +17 -14
- claude_mpm/services/shared/lifecycle_service_base.py +1 -14
- claude_mpm/services/shared/service_factory.py +8 -5
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/client_proxy.py +60 -5
- claude_mpm/services/socketio/dashboard_server.py +361 -0
- claude_mpm/services/socketio/event_normalizer.py +10 -6
- claude_mpm/services/socketio/handlers/__init__.py +5 -2
- claude_mpm/services/socketio/handlers/base.py +2 -2
- claude_mpm/services/socketio/handlers/code_analysis.py +90 -27
- claude_mpm/services/socketio/handlers/connection.py +22 -41
- claude_mpm/services/socketio/handlers/connection_handler.py +13 -10
- claude_mpm/services/socketio/handlers/file.py +46 -10
- claude_mpm/services/socketio/handlers/git.py +9 -9
- claude_mpm/services/socketio/handlers/hook.py +29 -17
- claude_mpm/services/socketio/handlers/registry.py +4 -2
- claude_mpm/services/socketio/monitor_client.py +364 -0
- claude_mpm/services/socketio/server/broadcaster.py +9 -7
- claude_mpm/services/socketio/server/connection_manager.py +2 -2
- claude_mpm/services/socketio/server/core.py +142 -8
- claude_mpm/services/socketio/server/eventbus_integration.py +20 -14
- claude_mpm/services/socketio/server/main.py +24 -24
- claude_mpm/services/socketio_client_manager.py +4 -4
- claude_mpm/services/subprocess_launcher_service.py +19 -15
- claude_mpm/services/system_instructions_service.py +3 -5
- claude_mpm/services/ticket_services/formatter_service.py +1 -1
- claude_mpm/services/ticket_services/validation_service.py +5 -5
- claude_mpm/services/unified/__init__.py +65 -0
- claude_mpm/services/unified/analyzer_strategies/__init__.py +44 -0
- claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +518 -0
- claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +680 -0
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +900 -0
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +745 -0
- claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +733 -0
- claude_mpm/services/unified/config_strategies/__init__.py +175 -0
- claude_mpm/services/unified/config_strategies/config_schema.py +731 -0
- claude_mpm/services/unified/config_strategies/context_strategy.py +747 -0
- claude_mpm/services/unified/config_strategies/error_handling_strategy.py +1005 -0
- claude_mpm/services/unified/config_strategies/file_loader_strategy.py +881 -0
- claude_mpm/services/unified/config_strategies/unified_config_service.py +823 -0
- claude_mpm/services/unified/config_strategies/validation_strategy.py +1148 -0
- claude_mpm/services/unified/deployment_strategies/__init__.py +97 -0
- claude_mpm/services/unified/deployment_strategies/base.py +553 -0
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +573 -0
- claude_mpm/services/unified/deployment_strategies/local.py +607 -0
- claude_mpm/services/unified/deployment_strategies/utils.py +667 -0
- claude_mpm/services/unified/deployment_strategies/vercel.py +471 -0
- claude_mpm/services/unified/interfaces.py +475 -0
- claude_mpm/services/unified/migration.py +509 -0
- claude_mpm/services/unified/strategies.py +534 -0
- claude_mpm/services/unified/unified_analyzer.py +542 -0
- claude_mpm/services/unified/unified_config.py +691 -0
- claude_mpm/services/unified/unified_deployment.py +466 -0
- claude_mpm/services/utility_service.py +6 -3
- claude_mpm/services/version_control/branch_strategy.py +2 -2
- claude_mpm/services/version_control/conflict_resolution.py +14 -8
- claude_mpm/services/version_control/git_operations.py +26 -24
- claude_mpm/services/version_control/semantic_versioning.py +14 -14
- claude_mpm/services/version_control/version_parser.py +14 -11
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +42 -0
- claude_mpm/skills/agent_skills_injector.py +324 -0
- claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
- claude_mpm/skills/bundled/__init__.py +6 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +573 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +286 -0
- claude_mpm/skills/skill_manager.py +310 -0
- claude_mpm/skills/skills_registry.py +347 -0
- claude_mpm/skills/skills_service.py +739 -0
- claude_mpm/storage/state_storage.py +31 -31
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +9 -9
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/tools/code_tree_builder.py +6 -6
- claude_mpm/tools/code_tree_events.py +14 -10
- claude_mpm/tools/socketio_debug.py +11 -11
- claude_mpm/utils/agent_dependency_loader.py +184 -36
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/common.py +544 -0
- claude_mpm/utils/config_manager.py +12 -6
- claude_mpm/utils/database_connector.py +298 -0
- claude_mpm/utils/dependency_cache.py +5 -3
- claude_mpm/utils/dependency_strategies.py +15 -10
- claude_mpm/utils/display_helper.py +260 -0
- claude_mpm/utils/environment_context.py +4 -3
- claude_mpm/utils/error_handler.py +5 -3
- claude_mpm/utils/file_utils.py +13 -14
- claude_mpm/utils/git_analyzer.py +407 -0
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/log_cleanup.py +627 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/path_operations.py +7 -4
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +131 -24
- claude_mpm/utils/session_logging.py +2 -2
- claude_mpm/utils/structured_questions.py +619 -0
- claude_mpm/utils/subprocess_utils.py +9 -8
- claude_mpm/validation/agent_validator.py +6 -6
- claude_mpm/validation/frontmatter_validator.py +6 -6
- claude_mpm-5.0.9.dist-info/METADATA +1028 -0
- claude_mpm-5.0.9.dist-info/RECORD +864 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/entry_points.txt +1 -0
- claude_mpm/agents/INSTRUCTIONS.md +0 -261
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -270
- claude_mpm/agents/templates/agent-manager.md +0 -619
- claude_mpm/agents/templates/agentic_coder_optimizer.json +0 -222
- claude_mpm/agents/templates/api_qa.json +0 -171
- claude_mpm/agents/templates/code_analyzer.json +0 -95
- claude_mpm/agents/templates/data_engineer.json +0 -152
- claude_mpm/agents/templates/documentation.json +0 -175
- claude_mpm/agents/templates/engineer.json +0 -176
- claude_mpm/agents/templates/imagemagick.json +0 -261
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/memory_manager.json +0 -155
- claude_mpm/agents/templates/ops.json +0 -175
- claude_mpm/agents/templates/project_organizer.json +0 -130
- claude_mpm/agents/templates/qa.json +0 -223
- claude_mpm/agents/templates/refactoring_engineer.json +0 -266
- claude_mpm/agents/templates/research.json +0 -163
- claude_mpm/agents/templates/security.json +0 -153
- claude_mpm/agents/templates/ticketing.json +0 -169
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -281
- claude_mpm/agents/templates/version_control.json +0 -147
- claude_mpm/agents/templates/web_qa.json +0 -254
- claude_mpm/agents/templates/web_ui.json +0 -176
- claude_mpm/cli/commands/configure_tui.py +0 -1927
- claude_mpm/cli/commands/mpm_init.py +0 -594
- claude_mpm/cli/commands/socketio_monitor.py +0 -233
- claude_mpm/commands/mpm-agents.md +0 -12
- claude_mpm/commands/mpm-config.md +0 -18
- claude_mpm/commands/mpm-tickets.md +0 -102
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/css/code-tree.css +0 -1408
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/js/components/code-tree.js +0 -3220
- claude_mpm/dashboard/static/js/components/code-viewer.js +0 -480
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1040
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
- claude_mpm/scripts/socketio_daemon_hardened.py +0 -937
- claude_mpm/scripts/socketio_daemon_wrapper.py +0 -78
- claude_mpm/scripts/socketio_server_manager.py +0 -349
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
- claude_mpm/services/cli/dashboard_launcher.py +0 -423
- claude_mpm/services/cli/socketio_manager.py +0 -537
- claude_mpm/services/diagnostics/checks/claude_desktop_check.py +0 -286
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -645
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -602
- claude_mpm/services/project/analyzer_refactored.py +0 -450
- claude_mpm/tools/code_tree_analyzer.py +0 -1693
- claude_mpm-4.1.26.dist-info/METADATA +0 -332
- claude_mpm-4.1.26.dist-info/RECORD +0 -606
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/top_level.txt +0 -0
|
@@ -9,7 +9,8 @@ import os
|
|
|
9
9
|
import shutil
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ....core.enums import OperationResult, ValidationSeverity
|
|
13
|
+
from ..models import DiagnosticResult
|
|
13
14
|
from .base_check import BaseDiagnosticCheck
|
|
14
15
|
|
|
15
16
|
|
|
@@ -46,14 +47,14 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
46
47
|
details["structure"] = structure_result.details
|
|
47
48
|
|
|
48
49
|
# Determine overall status
|
|
49
|
-
if any(r.status ==
|
|
50
|
-
status =
|
|
50
|
+
if any(r.status == ValidationSeverity.ERROR for r in sub_results):
|
|
51
|
+
status = ValidationSeverity.ERROR
|
|
51
52
|
message = "File system has critical issues"
|
|
52
|
-
elif any(r.status ==
|
|
53
|
-
status =
|
|
53
|
+
elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
|
|
54
|
+
status = ValidationSeverity.WARNING
|
|
54
55
|
message = "File system has minor issues"
|
|
55
56
|
else:
|
|
56
|
-
status =
|
|
57
|
+
status = OperationResult.SUCCESS
|
|
57
58
|
message = "File system healthy"
|
|
58
59
|
|
|
59
60
|
return DiagnosticResult(
|
|
@@ -67,7 +68,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
67
68
|
except Exception as e:
|
|
68
69
|
return DiagnosticResult(
|
|
69
70
|
category=self.category,
|
|
70
|
-
status=
|
|
71
|
+
status=ValidationSeverity.ERROR,
|
|
71
72
|
message=f"Filesystem check failed: {e!s}",
|
|
72
73
|
details={"error": str(e)},
|
|
73
74
|
)
|
|
@@ -106,7 +107,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
106
107
|
if issues:
|
|
107
108
|
return DiagnosticResult(
|
|
108
109
|
category="Permissions",
|
|
109
|
-
status=
|
|
110
|
+
status=ValidationSeverity.ERROR,
|
|
110
111
|
message=f"{len(issues)} permission issue(s)",
|
|
111
112
|
details={"issues": issues, "checked": checked},
|
|
112
113
|
fix_command="chmod -R 755 .claude",
|
|
@@ -116,14 +117,14 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
116
117
|
if not checked:
|
|
117
118
|
return DiagnosticResult(
|
|
118
119
|
category="Permissions",
|
|
119
|
-
status=
|
|
120
|
+
status=ValidationSeverity.WARNING,
|
|
120
121
|
message="No project .claude directories found",
|
|
121
122
|
details={"checked": [], "missing": [str(d) for d in critical_dirs]},
|
|
122
123
|
)
|
|
123
124
|
|
|
124
125
|
return DiagnosticResult(
|
|
125
126
|
category="Permissions",
|
|
126
|
-
status=
|
|
127
|
+
status=OperationResult.SUCCESS,
|
|
127
128
|
message="All permissions valid",
|
|
128
129
|
details={"checked": checked},
|
|
129
130
|
)
|
|
@@ -150,7 +151,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
150
151
|
if free_gb < 0.1: # Less than 100MB
|
|
151
152
|
return DiagnosticResult(
|
|
152
153
|
category="Disk Space",
|
|
153
|
-
status=
|
|
154
|
+
status=ValidationSeverity.ERROR,
|
|
154
155
|
message=f"Critical: Only {free_gb:.2f}GB free",
|
|
155
156
|
details=details,
|
|
156
157
|
fix_description="Free up disk space immediately",
|
|
@@ -158,7 +159,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
158
159
|
if free_gb < 1: # Less than 1GB
|
|
159
160
|
return DiagnosticResult(
|
|
160
161
|
category="Disk Space",
|
|
161
|
-
status=
|
|
162
|
+
status=ValidationSeverity.WARNING,
|
|
162
163
|
message=f"Low disk space: {free_gb:.2f}GB free",
|
|
163
164
|
details=details,
|
|
164
165
|
fix_description="Consider freeing up disk space",
|
|
@@ -166,7 +167,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
166
167
|
|
|
167
168
|
return DiagnosticResult(
|
|
168
169
|
category="Disk Space",
|
|
169
|
-
status=
|
|
170
|
+
status=OperationResult.SUCCESS,
|
|
170
171
|
message=f"{free_gb:.1f}GB available",
|
|
171
172
|
details=details,
|
|
172
173
|
)
|
|
@@ -174,7 +175,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
174
175
|
except Exception as e:
|
|
175
176
|
return DiagnosticResult(
|
|
176
177
|
category="Disk Space",
|
|
177
|
-
status=
|
|
178
|
+
status=ValidationSeverity.WARNING,
|
|
178
179
|
message=f"Could not check disk space: {e!s}",
|
|
179
180
|
details={"error": str(e)},
|
|
180
181
|
)
|
|
@@ -196,7 +197,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
196
197
|
if not base_dir.exists():
|
|
197
198
|
return DiagnosticResult(
|
|
198
199
|
category="Directory Structure",
|
|
199
|
-
status=
|
|
200
|
+
status=ValidationSeverity.WARNING,
|
|
200
201
|
message="Project .claude directory missing",
|
|
201
202
|
details={"base_dir": str(base_dir), "exists": False},
|
|
202
203
|
fix_command="mkdir -p .claude/{agents,responses,memory,logs}",
|
|
@@ -213,7 +214,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
213
214
|
if missing:
|
|
214
215
|
return DiagnosticResult(
|
|
215
216
|
category="Directory Structure",
|
|
216
|
-
status=
|
|
217
|
+
status=ValidationSeverity.WARNING,
|
|
217
218
|
message=f"Missing {len(missing)} subdirectory(s)",
|
|
218
219
|
details={
|
|
219
220
|
"base_dir": str(base_dir),
|
|
@@ -226,7 +227,7 @@ class FilesystemCheck(BaseDiagnosticCheck):
|
|
|
226
227
|
|
|
227
228
|
return DiagnosticResult(
|
|
228
229
|
category="Directory Structure",
|
|
229
|
-
status=
|
|
230
|
+
status=OperationResult.SUCCESS,
|
|
230
231
|
message="Directory structure complete",
|
|
231
232
|
details={"base_dir": str(base_dir), "directories": present},
|
|
232
233
|
)
|
|
@@ -5,11 +5,14 @@ WHY: Verify that claude-mpm is properly installed with correct Python version,
|
|
|
5
5
|
dependencies, and installation method.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
import os
|
|
8
9
|
import subprocess
|
|
9
10
|
import sys
|
|
10
11
|
from pathlib import Path
|
|
12
|
+
from typing import Optional
|
|
11
13
|
|
|
12
|
-
from
|
|
14
|
+
from ....core.enums import OperationResult, ValidationSeverity
|
|
15
|
+
from ..models import DiagnosticResult
|
|
13
16
|
from .base_check import BaseDiagnosticCheck
|
|
14
17
|
|
|
15
18
|
|
|
@@ -52,14 +55,14 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
52
55
|
details["dependencies"] = deps_result.details.get("status")
|
|
53
56
|
|
|
54
57
|
# Determine overall status
|
|
55
|
-
if any(r.status ==
|
|
56
|
-
status =
|
|
58
|
+
if any(r.status == ValidationSeverity.ERROR for r in sub_results):
|
|
59
|
+
status = ValidationSeverity.ERROR
|
|
57
60
|
message = "Installation has critical issues"
|
|
58
|
-
elif any(r.status ==
|
|
59
|
-
status =
|
|
61
|
+
elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
|
|
62
|
+
status = ValidationSeverity.WARNING
|
|
60
63
|
message = "Installation has minor issues"
|
|
61
64
|
else:
|
|
62
|
-
status =
|
|
65
|
+
status = OperationResult.SUCCESS
|
|
63
66
|
message = "Installation is healthy"
|
|
64
67
|
|
|
65
68
|
return DiagnosticResult(
|
|
@@ -73,7 +76,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
73
76
|
except Exception as e:
|
|
74
77
|
return DiagnosticResult(
|
|
75
78
|
category=self.category,
|
|
76
|
-
status=
|
|
79
|
+
status=ValidationSeverity.ERROR,
|
|
77
80
|
message=f"Installation check failed: {e!s}",
|
|
78
81
|
details={"error": str(e)},
|
|
79
82
|
)
|
|
@@ -89,7 +92,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
89
92
|
if version_info < min_version:
|
|
90
93
|
return DiagnosticResult(
|
|
91
94
|
category="Python Version",
|
|
92
|
-
status=
|
|
95
|
+
status=ValidationSeverity.ERROR,
|
|
93
96
|
message=f"Python {version_info.major}.{version_info.minor} is below minimum required {min_version[0]}.{min_version[1]}",
|
|
94
97
|
details={"version": version},
|
|
95
98
|
fix_description="Upgrade Python to 3.9 or higher",
|
|
@@ -97,13 +100,13 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
97
100
|
if version_info < recommended_version:
|
|
98
101
|
return DiagnosticResult(
|
|
99
102
|
category="Python Version",
|
|
100
|
-
status=
|
|
103
|
+
status=ValidationSeverity.WARNING,
|
|
101
104
|
message=f"Python {version_info.major}.{version_info.minor} works but {recommended_version[0]}.{recommended_version[1]}+ is recommended",
|
|
102
105
|
details={"version": version},
|
|
103
106
|
)
|
|
104
107
|
return DiagnosticResult(
|
|
105
108
|
category="Python Version",
|
|
106
|
-
status=
|
|
109
|
+
status=OperationResult.SUCCESS,
|
|
107
110
|
message=f"Python {version_info.major}.{version_info.minor}.{version_info.micro}",
|
|
108
111
|
details={"version": version},
|
|
109
112
|
)
|
|
@@ -120,7 +123,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
120
123
|
|
|
121
124
|
return DiagnosticResult(
|
|
122
125
|
category="Claude MPM Version",
|
|
123
|
-
status=
|
|
126
|
+
status=OperationResult.SUCCESS,
|
|
124
127
|
message=f"Version: {version}",
|
|
125
128
|
details={
|
|
126
129
|
"version": semantic_version,
|
|
@@ -131,7 +134,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
131
134
|
except Exception as e:
|
|
132
135
|
return DiagnosticResult(
|
|
133
136
|
category="Claude MPM Version",
|
|
134
|
-
status=
|
|
137
|
+
status=ValidationSeverity.WARNING,
|
|
135
138
|
message="Could not determine version",
|
|
136
139
|
details={"error": str(e)},
|
|
137
140
|
)
|
|
@@ -145,31 +148,42 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
145
148
|
exe_path = sys.executable
|
|
146
149
|
details["python_executable"] = exe_path
|
|
147
150
|
|
|
148
|
-
# 2. Check
|
|
151
|
+
# 2. Check for container environment
|
|
152
|
+
container_type = self._detect_container_environment()
|
|
153
|
+
if container_type:
|
|
154
|
+
details["container_type"] = container_type
|
|
155
|
+
methods_found.append("container")
|
|
156
|
+
|
|
157
|
+
# 3. Check if we're in a virtual environment
|
|
149
158
|
in_venv = hasattr(sys, "real_prefix") or (
|
|
150
159
|
hasattr(sys, "base_prefix") and sys.base_prefix != sys.prefix
|
|
151
160
|
)
|
|
152
161
|
|
|
153
|
-
#
|
|
162
|
+
# 4. Check if running from pipx environment
|
|
154
163
|
# Pipx creates venvs in specific locations
|
|
155
164
|
is_pipx_venv = False
|
|
156
165
|
if in_venv and (".local/pipx/venvs" in exe_path or "pipx/venvs" in exe_path):
|
|
157
166
|
is_pipx_venv = True
|
|
158
167
|
methods_found.append("pipx")
|
|
159
168
|
details["pipx_venv"] = sys.prefix
|
|
169
|
+
# Get pipx metadata if available
|
|
170
|
+
pipx_metadata = self._get_pipx_metadata()
|
|
171
|
+
if pipx_metadata:
|
|
172
|
+
details["pipx_metadata"] = pipx_metadata
|
|
160
173
|
elif in_venv:
|
|
161
174
|
# Regular virtual environment (not pipx)
|
|
162
175
|
methods_found.append("venv")
|
|
163
176
|
details["venv_path"] = sys.prefix
|
|
164
177
|
|
|
165
|
-
#
|
|
178
|
+
# 5. Check if running from source (development mode)
|
|
166
179
|
claude_mpm_path = Path(__file__).parent.parent.parent.parent.parent
|
|
167
|
-
if (claude_mpm_path / "pyproject.toml").exists()
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
180
|
+
if (claude_mpm_path / "pyproject.toml").exists() and (
|
|
181
|
+
claude_mpm_path / ".git"
|
|
182
|
+
).exists():
|
|
183
|
+
methods_found.append("development")
|
|
184
|
+
details["source_path"] = str(claude_mpm_path)
|
|
171
185
|
|
|
172
|
-
#
|
|
186
|
+
# 6. Check Homebrew Python
|
|
173
187
|
if not in_venv and "/opt/homebrew" in exe_path:
|
|
174
188
|
methods_found.append("homebrew")
|
|
175
189
|
details["homebrew_python"] = exe_path
|
|
@@ -178,33 +192,26 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
178
192
|
methods_found.append("homebrew")
|
|
179
193
|
details["homebrew_python"] = exe_path
|
|
180
194
|
|
|
181
|
-
#
|
|
182
|
-
if
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
195
|
+
# 7. Check for system Python
|
|
196
|
+
if (
|
|
197
|
+
not in_venv
|
|
198
|
+
and not methods_found
|
|
199
|
+
and ("/usr/bin/python" in exe_path or "/usr/local/bin/python" in exe_path)
|
|
200
|
+
):
|
|
201
|
+
methods_found.append("system")
|
|
202
|
+
details["system_python"] = exe_path
|
|
186
203
|
|
|
187
|
-
#
|
|
204
|
+
# 8. Additional check for pipx if not detected via venv
|
|
188
205
|
if "pipx" not in methods_found:
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
check=False,
|
|
206
|
+
pipx_check = self._check_pipx_installation_status()
|
|
207
|
+
if pipx_check and not is_pipx_venv:
|
|
208
|
+
# Pipx is installed but we're not running from it
|
|
209
|
+
details["pipx_installed"] = True
|
|
210
|
+
details["pipx_not_active"] = (
|
|
211
|
+
"claude-mpm is installed via pipx but not currently running from pipx environment"
|
|
196
212
|
)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
# Pipx is installed but we're not running from it
|
|
200
|
-
details["pipx_installed"] = True
|
|
201
|
-
details["pipx_not_active"] = (
|
|
202
|
-
"claude-mpm is installed via pipx but not currently running from pipx environment"
|
|
203
|
-
)
|
|
204
|
-
except (subprocess.SubprocessError, FileNotFoundError):
|
|
205
|
-
pass
|
|
206
|
-
|
|
207
|
-
# 8. Check pip installation status
|
|
213
|
+
|
|
214
|
+
# 9. Check pip installation status
|
|
208
215
|
try:
|
|
209
216
|
result = subprocess.run(
|
|
210
217
|
[sys.executable, "-m", "pip", "show", "claude-mpm"],
|
|
@@ -237,16 +244,32 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
237
244
|
if not methods_found:
|
|
238
245
|
return DiagnosticResult(
|
|
239
246
|
category="Installation Method",
|
|
240
|
-
status=
|
|
247
|
+
status=ValidationSeverity.WARNING,
|
|
241
248
|
message="Installation method unknown",
|
|
242
249
|
details=details,
|
|
243
250
|
)
|
|
244
251
|
|
|
252
|
+
# Container environments are special
|
|
253
|
+
if "container" in methods_found:
|
|
254
|
+
container_msg = (
|
|
255
|
+
f"Running in {details.get('container_type', 'container')} environment"
|
|
256
|
+
)
|
|
257
|
+
if "pipx" in methods_found:
|
|
258
|
+
container_msg += " with pipx"
|
|
259
|
+
elif "venv" in methods_found:
|
|
260
|
+
container_msg += " with virtual environment"
|
|
261
|
+
return DiagnosticResult(
|
|
262
|
+
category="Installation Method",
|
|
263
|
+
status=OperationResult.SUCCESS,
|
|
264
|
+
message=container_msg,
|
|
265
|
+
details=details,
|
|
266
|
+
)
|
|
267
|
+
|
|
245
268
|
# Pipx is the recommended method
|
|
246
269
|
if "pipx" in methods_found:
|
|
247
270
|
return DiagnosticResult(
|
|
248
271
|
category="Installation Method",
|
|
249
|
-
status=
|
|
272
|
+
status=OperationResult.SUCCESS,
|
|
250
273
|
message="Running from pipx environment (recommended)",
|
|
251
274
|
details=details,
|
|
252
275
|
)
|
|
@@ -256,7 +279,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
256
279
|
venv_name = Path(sys.prefix).name
|
|
257
280
|
return DiagnosticResult(
|
|
258
281
|
category="Installation Method",
|
|
259
|
-
status=
|
|
282
|
+
status=OperationResult.SUCCESS,
|
|
260
283
|
message=f"Development mode in virtual environment '{venv_name}'",
|
|
261
284
|
details=details,
|
|
262
285
|
)
|
|
@@ -266,7 +289,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
266
289
|
venv_name = Path(sys.prefix).name
|
|
267
290
|
return DiagnosticResult(
|
|
268
291
|
category="Installation Method",
|
|
269
|
-
status=
|
|
292
|
+
status=OperationResult.SUCCESS,
|
|
270
293
|
message=f"Virtual environment '{venv_name}'",
|
|
271
294
|
details=details,
|
|
272
295
|
)
|
|
@@ -275,7 +298,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
275
298
|
if "development" in methods_found and "homebrew" in methods_found:
|
|
276
299
|
return DiagnosticResult(
|
|
277
300
|
category="Installation Method",
|
|
278
|
-
status=
|
|
301
|
+
status=OperationResult.SUCCESS,
|
|
279
302
|
message="Development mode with Homebrew Python",
|
|
280
303
|
details=details,
|
|
281
304
|
)
|
|
@@ -283,7 +306,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
283
306
|
if "development" in methods_found:
|
|
284
307
|
return DiagnosticResult(
|
|
285
308
|
category="Installation Method",
|
|
286
|
-
status=
|
|
309
|
+
status=OperationResult.SUCCESS,
|
|
287
310
|
message="Development mode",
|
|
288
311
|
details=details,
|
|
289
312
|
)
|
|
@@ -293,9 +316,9 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
293
316
|
msg = "Homebrew Python"
|
|
294
317
|
if details.get("pipx_installed"):
|
|
295
318
|
msg += " (pipx is installed but not active - consider using 'pipx run claude-mpm')"
|
|
296
|
-
status =
|
|
319
|
+
status = ValidationSeverity.WARNING
|
|
297
320
|
else:
|
|
298
|
-
status =
|
|
321
|
+
status = OperationResult.SUCCESS
|
|
299
322
|
return DiagnosticResult(
|
|
300
323
|
category="Installation Method",
|
|
301
324
|
status=status,
|
|
@@ -307,7 +330,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
307
330
|
if "pip" in methods_found:
|
|
308
331
|
return DiagnosticResult(
|
|
309
332
|
category="Installation Method",
|
|
310
|
-
status=
|
|
333
|
+
status=ValidationSeverity.WARNING,
|
|
311
334
|
message="System pip installation (consider using pipx or venv instead)",
|
|
312
335
|
details=details,
|
|
313
336
|
fix_description="Consider reinstalling with pipx for isolated environment",
|
|
@@ -317,7 +340,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
317
340
|
if "system" in methods_found:
|
|
318
341
|
return DiagnosticResult(
|
|
319
342
|
category="Installation Method",
|
|
320
|
-
status=
|
|
343
|
+
status=ValidationSeverity.WARNING,
|
|
321
344
|
message="System Python (consider using pipx or venv)",
|
|
322
345
|
details=details,
|
|
323
346
|
)
|
|
@@ -325,7 +348,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
325
348
|
# Fallback for any other combination
|
|
326
349
|
return DiagnosticResult(
|
|
327
350
|
category="Installation Method",
|
|
328
|
-
status=
|
|
351
|
+
status=OperationResult.SUCCESS,
|
|
329
352
|
message=f"Installed via {', '.join(methods_found)}",
|
|
330
353
|
details=details,
|
|
331
354
|
)
|
|
@@ -377,7 +400,7 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
377
400
|
|
|
378
401
|
return DiagnosticResult(
|
|
379
402
|
category="Dependencies",
|
|
380
|
-
status=
|
|
403
|
+
status=ValidationSeverity.ERROR,
|
|
381
404
|
message=f"Missing critical dependencies: {', '.join(missing)}",
|
|
382
405
|
details={
|
|
383
406
|
"missing": missing,
|
|
@@ -392,11 +415,11 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
392
415
|
if warnings:
|
|
393
416
|
return DiagnosticResult(
|
|
394
417
|
category="Dependencies",
|
|
395
|
-
status=
|
|
418
|
+
status=ValidationSeverity.WARNING,
|
|
396
419
|
message=f"Missing optional dependencies: {', '.join(warnings)}",
|
|
397
420
|
details={
|
|
398
421
|
"optional_missing": warnings,
|
|
399
|
-
"status":
|
|
422
|
+
"status": OperationResult.PARTIAL,
|
|
400
423
|
"installed": installed,
|
|
401
424
|
"python_executable": sys.executable,
|
|
402
425
|
"in_venv": in_venv,
|
|
@@ -404,12 +427,94 @@ class InstallationCheck(BaseDiagnosticCheck):
|
|
|
404
427
|
)
|
|
405
428
|
return DiagnosticResult(
|
|
406
429
|
category="Dependencies",
|
|
407
|
-
status=
|
|
430
|
+
status=OperationResult.SUCCESS,
|
|
408
431
|
message="All dependencies installed",
|
|
409
432
|
details={
|
|
410
|
-
"status":
|
|
433
|
+
"status": OperationResult.COMPLETED,
|
|
411
434
|
"installed": installed,
|
|
412
435
|
"python_executable": sys.executable,
|
|
413
436
|
"in_venv": in_venv,
|
|
414
437
|
},
|
|
415
438
|
)
|
|
439
|
+
|
|
440
|
+
def _detect_container_environment(self) -> Optional[str]:
|
|
441
|
+
"""Detect if running in a container environment."""
|
|
442
|
+
# Check for Docker
|
|
443
|
+
if Path("/.dockerenv").exists():
|
|
444
|
+
return "Docker"
|
|
445
|
+
|
|
446
|
+
# Check for Kubernetes
|
|
447
|
+
if Path("/var/run/secrets/kubernetes.io").exists():
|
|
448
|
+
return "Kubernetes"
|
|
449
|
+
|
|
450
|
+
# Check cgroup for container indicators
|
|
451
|
+
try:
|
|
452
|
+
with Path("/proc/1/cgroup").open() as f:
|
|
453
|
+
cgroup = f.read()
|
|
454
|
+
if "docker" in cgroup:
|
|
455
|
+
return "Docker"
|
|
456
|
+
if "kubepods" in cgroup:
|
|
457
|
+
return "Kubernetes"
|
|
458
|
+
if "containerd" in cgroup:
|
|
459
|
+
return "containerd"
|
|
460
|
+
if "lxc" in cgroup:
|
|
461
|
+
return "LXC"
|
|
462
|
+
except (FileNotFoundError, PermissionError):
|
|
463
|
+
pass
|
|
464
|
+
|
|
465
|
+
# Check environment variables
|
|
466
|
+
if os.environ.get("CONTAINER"):
|
|
467
|
+
return os.environ.get("CONTAINER_ENGINE", "Container")
|
|
468
|
+
|
|
469
|
+
# Check for Podman
|
|
470
|
+
if Path("/run/.containerenv").exists():
|
|
471
|
+
return "Podman"
|
|
472
|
+
|
|
473
|
+
# Check for WSL
|
|
474
|
+
if Path("/proc/sys/fs/binfmt_misc/WSLInterop").exists():
|
|
475
|
+
return "WSL"
|
|
476
|
+
|
|
477
|
+
return None
|
|
478
|
+
|
|
479
|
+
def _get_pipx_metadata(self) -> Optional[dict]:
|
|
480
|
+
"""Get pipx metadata for the current installation."""
|
|
481
|
+
try:
|
|
482
|
+
import json
|
|
483
|
+
|
|
484
|
+
result = subprocess.run(
|
|
485
|
+
["pipx", "list", "--json"],
|
|
486
|
+
capture_output=True,
|
|
487
|
+
text=True,
|
|
488
|
+
timeout=5,
|
|
489
|
+
check=False,
|
|
490
|
+
)
|
|
491
|
+
if result.returncode == 0:
|
|
492
|
+
data = json.loads(result.stdout)
|
|
493
|
+
venvs = data.get("venvs", {})
|
|
494
|
+
if "claude-mpm" in venvs:
|
|
495
|
+
return {
|
|
496
|
+
"version": venvs["claude-mpm"]
|
|
497
|
+
.get("metadata", {})
|
|
498
|
+
.get("main_package", {})
|
|
499
|
+
.get("package_version"),
|
|
500
|
+
"python": venvs["claude-mpm"]
|
|
501
|
+
.get("metadata", {})
|
|
502
|
+
.get("python_version"),
|
|
503
|
+
}
|
|
504
|
+
except Exception:
|
|
505
|
+
pass
|
|
506
|
+
return None
|
|
507
|
+
|
|
508
|
+
def _check_pipx_installation_status(self) -> bool:
|
|
509
|
+
"""Check if claude-mpm is installed via pipx."""
|
|
510
|
+
try:
|
|
511
|
+
result = subprocess.run(
|
|
512
|
+
["pipx", "list"],
|
|
513
|
+
capture_output=True,
|
|
514
|
+
text=True,
|
|
515
|
+
timeout=5,
|
|
516
|
+
check=False,
|
|
517
|
+
)
|
|
518
|
+
return "claude-mpm" in result.stdout
|
|
519
|
+
except (subprocess.SubprocessError, FileNotFoundError):
|
|
520
|
+
return False
|