claude-mpm 4.1.26__py3-none-any.whl → 4.24.0__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.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- 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 +420 -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 +299 -29
- claude_mpm/agents/PM_INSTRUCTIONS.md +1159 -0
- claude_mpm/agents/WORKFLOW.md +355 -191
- claude_mpm/agents/agent_loader.py +40 -10
- claude_mpm/agents/agent_loader_integration.py +3 -2
- claude_mpm/agents/async_agent_loader.py +3 -3
- claude_mpm/agents/base_agent_loader.py +11 -9
- claude_mpm/agents/frontmatter_validator.py +291 -251
- claude_mpm/agents/system_agent_config.py +3 -2
- claude_mpm/agents/templates/README.md +465 -0
- claude_mpm/agents/templates/agent-manager.json +7 -4
- claude_mpm/agents/templates/{agentic_coder_optimizer.json → agentic-coder-optimizer.json} +33 -7
- claude_mpm/agents/templates/api_qa.json +16 -4
- claude_mpm/agents/templates/circuit_breakers.md +638 -0
- claude_mpm/agents/templates/clerk-ops.json +235 -0
- claude_mpm/agents/templates/code_analyzer.json +10 -4
- claude_mpm/agents/templates/content-agent.json +358 -0
- claude_mpm/agents/templates/dart_engineer.json +307 -0
- claude_mpm/agents/templates/data_engineer.json +87 -14
- claude_mpm/agents/templates/documentation.json +76 -13
- claude_mpm/agents/templates/engineer.json +43 -9
- claude_mpm/agents/templates/gcp_ops_agent.json +253 -0
- claude_mpm/agents/templates/git_file_tracking.md +584 -0
- claude_mpm/agents/templates/golang_engineer.json +270 -0
- claude_mpm/agents/templates/imagemagick.json +5 -2
- claude_mpm/agents/templates/java_engineer.json +346 -0
- claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
- claude_mpm/agents/templates/local_ops_agent.json +1840 -0
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +400 -0
- claude_mpm/agents/templates/memory_manager.json +6 -3
- claude_mpm/agents/templates/nextjs_engineer.json +285 -0
- claude_mpm/agents/templates/ops.json +14 -4
- claude_mpm/agents/templates/php-engineer.json +287 -0
- claude_mpm/agents/templates/pm_examples.md +474 -0
- claude_mpm/agents/templates/pm_red_flags.md +262 -0
- claude_mpm/agents/templates/product_owner.json +338 -0
- claude_mpm/agents/templates/project_organizer.json +19 -5
- claude_mpm/agents/templates/prompt-engineer.json +737 -0
- claude_mpm/agents/templates/python_engineer.json +387 -0
- claude_mpm/agents/templates/qa.json +25 -5
- claude_mpm/agents/templates/react_engineer.json +239 -0
- claude_mpm/agents/templates/refactoring_engineer.json +15 -5
- claude_mpm/agents/templates/research.json +46 -21
- claude_mpm/agents/templates/response_format.md +583 -0
- claude_mpm/agents/templates/ruby-engineer.json +280 -0
- claude_mpm/agents/templates/rust_engineer.json +275 -0
- claude_mpm/agents/templates/security.json +59 -10
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/tauri_engineer.json +274 -0
- claude_mpm/agents/templates/ticketing.json +16 -7
- claude_mpm/agents/templates/typescript_engineer.json +285 -0
- claude_mpm/agents/templates/validation_templates.md +312 -0
- claude_mpm/agents/templates/vercel_ops_agent.json +164 -33
- claude_mpm/agents/templates/version_control.json +16 -4
- claude_mpm/agents/templates/web_qa.json +167 -21
- claude_mpm/agents/templates/web_ui.json +18 -5
- claude_mpm/cli/__init__.py +38 -378
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_manager.py +675 -20
- claude_mpm/cli/commands/agent_state_manager.py +186 -0
- claude_mpm/cli/commands/agents.py +722 -150
- claude_mpm/cli/commands/agents_detect.py +380 -0
- claude_mpm/cli/commands/agents_recommend.py +309 -0
- claude_mpm/cli/commands/aggregate.py +10 -6
- claude_mpm/cli/commands/analyze.py +15 -10
- claude_mpm/cli/commands/analyze_code.py +8 -4
- claude_mpm/cli/commands/auto_configure.py +570 -0
- claude_mpm/cli/commands/cleanup.py +12 -12
- claude_mpm/cli/commands/config.py +47 -13
- claude_mpm/cli/commands/configure.py +469 -1064
- 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 +167 -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 +7 -7
- claude_mpm/cli/commands/doctor.py +43 -7
- claude_mpm/cli/commands/info.py +3 -4
- claude_mpm/cli/commands/local_deploy.py +537 -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 +525 -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/run.py +169 -42
- claude_mpm/cli/commands/search.py +458 -0
- claude_mpm/cli/commands/skills.py +488 -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 +204 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +21 -0
- claude_mpm/cli/interactive/agent_wizard.py +962 -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/agents_parser.py +116 -0
- claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
- claude_mpm/cli/parsers/base_parser.py +143 -3
- 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/skills_parser.py +137 -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 +562 -0
- claude_mpm/cli/startup_logging.py +179 -13
- claude_mpm/cli/utils.py +53 -2
- claude_mpm/commands/mpm-agents-detect.md +168 -0
- claude_mpm/commands/mpm-agents-recommend.md +214 -0
- claude_mpm/commands/mpm-agents.md +118 -8
- claude_mpm/commands/mpm-auto-configure.md +269 -0
- claude_mpm/commands/mpm-config.md +137 -14
- claude_mpm/commands/mpm-help.md +285 -5
- claude_mpm/commands/mpm-init.md +374 -15
- claude_mpm/commands/mpm-monitor.md +409 -0
- claude_mpm/commands/mpm-organize.md +295 -0
- claude_mpm/commands/mpm-resume.md +372 -0
- claude_mpm/commands/mpm-status.md +71 -9
- claude_mpm/commands/mpm-tickets.md +56 -7
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +2 -0
- claude_mpm/config/agent_config.py +4 -4
- 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/socketio_config.py +3 -3
- claude_mpm/constants.py +15 -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 +19 -8
- claude_mpm/core/config.py +85 -8
- claude_mpm/core/config_aliases.py +7 -6
- claude_mpm/core/constants.py +65 -0
- 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 +38 -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 +223 -0
- claude_mpm/core/framework/loaders/instruction_loader.py +161 -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_manager.py +8 -6
- claude_mpm/core/injectable_service.py +11 -8
- claude_mpm/core/instruction_reinforcement_hook.py +4 -3
- claude_mpm/core/interactive_session.py +55 -8
- 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 +19 -14
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/logging_utils.py +520 -0
- claude_mpm/core/oneshot_session.py +51 -7
- 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/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/socketio_pool.py +15 -15
- 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/react/components/DataInspector/DataInspector.module.css +188 -0
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +156 -0
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +38 -0
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +92 -0
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +248 -0
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +61 -0
- claude_mpm/dashboard/static/archive/test_activity_connection.html +179 -0
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +68 -0
- claude_mpm/dashboard/static/archive/test_dashboard.html +409 -0
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +519 -0
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +181 -0
- claude_mpm/dashboard/static/archive/test_file_data.html +315 -0
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +243 -0
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +234 -0
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +117 -0
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +115 -0
- claude_mpm/dashboard/static/archive/test_file_viewer.html +224 -0
- claude_mpm/dashboard/static/archive/test_final_activity.html +220 -0
- claude_mpm/dashboard/static/archive/test_tab_fix.html +139 -0
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +1 -0
- claude_mpm/dashboard/static/built/components/activity-tree.js +1 -1
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +777 -0
- claude_mpm/dashboard/static/built/components/agent-inference.js +1 -1
- claude_mpm/dashboard/static/built/components/build-tracker.js +333 -0
- claude_mpm/dashboard/static/built/components/code-simple.js +857 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +353 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +235 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +409 -0
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +435 -0
- claude_mpm/dashboard/static/built/components/code-tree.js +1 -1
- claude_mpm/dashboard/static/built/components/code-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/connection-debug.js +654 -0
- claude_mpm/dashboard/static/built/components/diff-viewer.js +891 -0
- claude_mpm/dashboard/static/built/components/event-processor.js +1 -1
- claude_mpm/dashboard/static/built/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/export-manager.js +1 -1
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +443 -0
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +690 -0
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +1 -1
- claude_mpm/dashboard/static/built/components/file-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/nav-bar.js +145 -0
- claude_mpm/dashboard/static/built/components/page-structure.js +429 -0
- claude_mpm/dashboard/static/built/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +1 -1
- claude_mpm/dashboard/static/built/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/built/connection-manager.js +536 -0
- claude_mpm/dashboard/static/built/dashboard.js +1 -1
- claude_mpm/dashboard/static/built/extension-error-handler.js +164 -0
- claude_mpm/dashboard/static/built/react/events.js +30 -0
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +396 -0
- claude_mpm/dashboard/static/built/shared/event-bus.js +330 -0
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +540 -0
- claude_mpm/dashboard/static/built/shared/logger.js +385 -0
- claude_mpm/dashboard/static/built/shared/page-structure.js +249 -0
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +253 -0
- claude_mpm/dashboard/static/built/socket-client.js +1 -1
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +185 -0
- claude_mpm/dashboard/static/css/dashboard.css +588 -6
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +1 -0
- claude_mpm/dashboard/static/dist/components/activity-tree.js +1 -1
- claude_mpm/dashboard/static/dist/components/agent-inference.js +1 -1
- claude_mpm/dashboard/static/dist/components/code-tree.js +1 -1
- claude_mpm/dashboard/static/dist/components/code-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/event-processor.js +1 -1
- claude_mpm/dashboard/static/dist/components/event-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/export-manager.js +1 -1
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +1 -1
- claude_mpm/dashboard/static/dist/components/file-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/session-manager.js +1 -1
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/working-directory.js +1 -1
- claude_mpm/dashboard/static/dist/dashboard.js +1 -1
- claude_mpm/dashboard/static/dist/react/events.js +30 -0
- claude_mpm/dashboard/static/dist/socket-client.js +1 -1
- claude_mpm/dashboard/static/events.html +607 -0
- claude_mpm/dashboard/static/index.html +635 -0
- claude_mpm/dashboard/static/js/components/activity-tree.js +3 -17
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +4 -1
- claude_mpm/dashboard/static/js/components/agent-inference.js +3 -0
- claude_mpm/dashboard/static/js/components/build-tracker.js +8 -0
- claude_mpm/dashboard/static/js/components/code-simple.js +857 -0
- 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 +39 -2
- 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 +30 -10
- claude_mpm/dashboard/static/js/components/file-viewer.js +580 -0
- claude_mpm/dashboard/static/js/components/module-viewer.js +26 -0
- claude_mpm/dashboard/static/js/components/session-manager.js +7 -7
- claude_mpm/dashboard/static/js/components/socket-manager.js +4 -0
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +356 -41
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +455 -23
- claude_mpm/dashboard/static/js/components/working-directory.js +44 -9
- claude_mpm/dashboard/static/js/dashboard.js +245 -132
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +396 -0
- claude_mpm/dashboard/static/js/shared/event-bus.js +330 -0
- claude_mpm/dashboard/static/js/shared/logger.js +385 -0
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +253 -0
- claude_mpm/dashboard/static/js/socket-client.js +49 -22
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +562 -0
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +185 -0
- claude_mpm/dashboard/static/legacy/activity.html +736 -0
- claude_mpm/dashboard/static/legacy/agents.html +786 -0
- claude_mpm/dashboard/static/legacy/files.html +747 -0
- claude_mpm/dashboard/static/legacy/tools.html +831 -0
- claude_mpm/dashboard/static/monitors.html +431 -0
- claude_mpm/dashboard/static/production/events.html +659 -0
- claude_mpm/dashboard/static/production/main.html +698 -0
- claude_mpm/dashboard/static/production/monitors.html +483 -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/static/test-archive/dashboard.html +635 -0
- claude_mpm/dashboard/static/test-archive/debug-events.html +147 -0
- claude_mpm/dashboard/static/test-archive/test-navigation.html +256 -0
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +180 -0
- claude_mpm/dashboard/static/test-archive/test_debug.html +25 -0
- claude_mpm/dashboard/templates/code_simple.html +153 -0
- claude_mpm/dashboard/templates/index.html +112 -109
- claude_mpm/experimental/cli_enhancements.py +4 -2
- 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/connection_pool.py +4 -4
- claude_mpm/hooks/claude_hooks/event_handlers.py +21 -18
- 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/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 +60 -0
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +235 -0
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +217 -0
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +286 -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 +183 -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/resume_log.py +340 -0
- claude_mpm/scripts/claude-hook-handler.sh +33 -7
- 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/services/__init__.py +144 -160
- claude_mpm/services/agents/__init__.py +18 -5
- claude_mpm/services/agents/agent_builder.py +13 -11
- claude_mpm/services/agents/auto_config_manager.py +796 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_deployment.py +38 -15
- claude_mpm/services/agents/deployment/agent_discovery_service.py +125 -7
- 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 +4 -2
- 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_state_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_template_builder.py +715 -47
- 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/async_agent_deployment.py +1 -1
- 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/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 +134 -38
- 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 +9 -6
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +9 -6
- claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
- 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/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 +2 -2
- claude_mpm/services/agents/local_template_manager.py +744 -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/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 +9 -7
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/__init__.py +33 -1
- claude_mpm/services/core/base.py +26 -11
- claude_mpm/services/core/interfaces/__init__.py +90 -3
- claude_mpm/services/core/interfaces/agent.py +184 -0
- claude_mpm/services/core/interfaces/health.py +172 -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 +79 -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 +4 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +30 -32
- 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 +20 -19
- claude_mpm/services/diagnostics/checks/mcp_check.py +57 -43
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +1066 -0
- claude_mpm/services/diagnostics/checks/monitor_check.py +24 -23
- claude_mpm/services/diagnostics/checks/startup_log_check.py +14 -11
- claude_mpm/services/diagnostics/diagnostic_runner.py +22 -13
- claude_mpm/services/diagnostics/doctor_reporter.py +275 -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 +8 -4
- 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/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/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 +1 -1
- claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
- 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/local_ops/__init__.py +165 -0
- claude_mpm/services/local_ops/crash_detector.py +257 -0
- claude_mpm/services/local_ops/health_checks/__init__.py +28 -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 +430 -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 +1612 -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 +23 -4
- 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 +585 -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 +4 -4
- claude_mpm/services/mcp_gateway/server/stdio_server.py +9 -15
- 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 +551 -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 +729 -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 +453 -0
- claude_mpm/services/model/ollama_provider.py +415 -0
- claude_mpm/services/monitor/__init__.py +20 -0
- claude_mpm/services/monitor/daemon.py +671 -0
- claude_mpm/services/monitor/daemon_manager.py +963 -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 +2 -2
- 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 +553 -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 +581 -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 +1 -0
- claude_mpm/services/self_upgrade_service.py +500 -0
- claude_mpm/services/session_management_service.py +7 -5
- 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/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 +21 -40
- 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 +8 -8
- 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 +141 -4
- claude_mpm/services/socketio/server/eventbus_integration.py +20 -14
- claude_mpm/services/socketio/server/main.py +23 -21
- 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 +2 -2
- 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 +903 -0
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +746 -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 +475 -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 +470 -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 +8 -4
- 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/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/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -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/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -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/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -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/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -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/condition-based-waiting/SKILL.md +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -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/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -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 +348 -0
- claude_mpm/skills/skills_service.py +739 -0
- claude_mpm/storage/state_storage.py +31 -31
- claude_mpm/tools/__main__.py +1 -1
- 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 +108 -27
- 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 +2 -2
- 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/log_cleanup.py +627 -0
- claude_mpm/utils/path_operations.py +7 -4
- claude_mpm/utils/robust_installer.py +133 -24
- claude_mpm/utils/session_logging.py +2 -2
- 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-4.24.0.dist-info/METADATA +675 -0
- claude_mpm-4.24.0.dist-info/RECORD +1018 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-4.24.0.dist-info}/entry_points.txt +1 -0
- claude_mpm/agents/INSTRUCTIONS.md +0 -261
- claude_mpm/agents/templates/agent-manager.md +0 -619
- 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/dashboard/static/css/code-tree.css +0 -1408
- 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-4.24.0.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-4.24.0.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-4.24.0.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
@@ -11,7 +11,8 @@ from collections import defaultdict
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import Dict
|
|
13
13
|
|
|
14
|
-
from
|
|
14
|
+
from ....core.enums import OperationResult, ValidationSeverity
|
|
15
|
+
from ..models import DiagnosticResult
|
|
15
16
|
from .base_check import BaseDiagnosticCheck
|
|
16
17
|
|
|
17
18
|
|
|
@@ -77,14 +78,14 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
77
78
|
sub_results.append(separation_result)
|
|
78
79
|
|
|
79
80
|
# Determine overall status
|
|
80
|
-
if any(r.status ==
|
|
81
|
-
status =
|
|
81
|
+
if any(r.status == ValidationSeverity.ERROR for r in sub_results):
|
|
82
|
+
status = ValidationSeverity.ERROR
|
|
82
83
|
message = "Found critical issues with instruction files"
|
|
83
|
-
elif any(r.status ==
|
|
84
|
-
status =
|
|
84
|
+
elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
|
|
85
|
+
status = ValidationSeverity.WARNING
|
|
85
86
|
message = "Found minor issues with instruction files"
|
|
86
87
|
else:
|
|
87
|
-
status =
|
|
88
|
+
status = OperationResult.SUCCESS
|
|
88
89
|
message = "Instruction files are properly configured"
|
|
89
90
|
|
|
90
91
|
return DiagnosticResult(
|
|
@@ -98,7 +99,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
98
99
|
except Exception as e:
|
|
99
100
|
return DiagnosticResult(
|
|
100
101
|
category=self.category,
|
|
101
|
-
status=
|
|
102
|
+
status=ValidationSeverity.ERROR,
|
|
102
103
|
message=f"Instructions check failed: {e!s}",
|
|
103
104
|
details={"error": str(e)},
|
|
104
105
|
)
|
|
@@ -146,7 +147,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
146
147
|
if not claude_files:
|
|
147
148
|
return DiagnosticResult(
|
|
148
149
|
category="CLAUDE.md Placement",
|
|
149
|
-
status=
|
|
150
|
+
status=OperationResult.SUCCESS,
|
|
150
151
|
message="No CLAUDE.md files found",
|
|
151
152
|
details={},
|
|
152
153
|
)
|
|
@@ -170,7 +171,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
170
171
|
if issues:
|
|
171
172
|
return DiagnosticResult(
|
|
172
173
|
category="CLAUDE.md Placement",
|
|
173
|
-
status=
|
|
174
|
+
status=ValidationSeverity.WARNING,
|
|
174
175
|
message=f"Found {len(issues)} misplaced CLAUDE.md file(s)",
|
|
175
176
|
details={"issues": issues},
|
|
176
177
|
fix_description=(
|
|
@@ -181,7 +182,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
181
182
|
|
|
182
183
|
return DiagnosticResult(
|
|
183
184
|
category="CLAUDE.md Placement",
|
|
184
|
-
status=
|
|
185
|
+
status=OperationResult.SUCCESS,
|
|
185
186
|
message="CLAUDE.md properly placed in project root",
|
|
186
187
|
details={"count": len(claude_files)},
|
|
187
188
|
)
|
|
@@ -191,7 +192,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
191
192
|
if len(files) < 2:
|
|
192
193
|
return DiagnosticResult(
|
|
193
194
|
category="Duplicate Content",
|
|
194
|
-
status=
|
|
195
|
+
status=OperationResult.SUCCESS,
|
|
195
196
|
message="No duplicate content detected",
|
|
196
197
|
details={},
|
|
197
198
|
)
|
|
@@ -226,7 +227,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
226
227
|
if duplicates:
|
|
227
228
|
return DiagnosticResult(
|
|
228
229
|
category="Duplicate Content",
|
|
229
|
-
status=
|
|
230
|
+
status=ValidationSeverity.WARNING,
|
|
230
231
|
message=f"Found {len(duplicates)} duplicate content block(s)",
|
|
231
232
|
details={"duplicates": duplicates[:5]}, # Limit to first 5
|
|
232
233
|
fix_description=(
|
|
@@ -238,7 +239,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
238
239
|
|
|
239
240
|
return DiagnosticResult(
|
|
240
241
|
category="Duplicate Content",
|
|
241
|
-
status=
|
|
242
|
+
status=OperationResult.SUCCESS,
|
|
242
243
|
message="No significant duplicate content found",
|
|
243
244
|
details={},
|
|
244
245
|
)
|
|
@@ -280,7 +281,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
280
281
|
if conflicts:
|
|
281
282
|
return DiagnosticResult(
|
|
282
283
|
category="Conflicting Directives",
|
|
283
|
-
status=
|
|
284
|
+
status=ValidationSeverity.ERROR,
|
|
284
285
|
message=f"Found {len(conflicts)} potential conflict(s)",
|
|
285
286
|
details={"conflicts": conflicts},
|
|
286
287
|
fix_description=(
|
|
@@ -292,7 +293,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
292
293
|
|
|
293
294
|
return DiagnosticResult(
|
|
294
295
|
category="Conflicting Directives",
|
|
295
|
-
status=
|
|
296
|
+
status=OperationResult.SUCCESS,
|
|
296
297
|
message="No conflicting directives detected",
|
|
297
298
|
details={},
|
|
298
299
|
)
|
|
@@ -330,7 +331,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
330
331
|
if duplicates:
|
|
331
332
|
return DiagnosticResult(
|
|
332
333
|
category="Agent Definitions",
|
|
333
|
-
status=
|
|
334
|
+
status=ValidationSeverity.WARNING,
|
|
334
335
|
message=f"Found {len(duplicates)} duplicate agent definition(s)",
|
|
335
336
|
details={"duplicates": duplicates},
|
|
336
337
|
fix_description=(
|
|
@@ -341,7 +342,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
341
342
|
|
|
342
343
|
return DiagnosticResult(
|
|
343
344
|
category="Agent Definitions",
|
|
344
|
-
status=
|
|
345
|
+
status=OperationResult.SUCCESS,
|
|
345
346
|
message="Agent definitions are unique",
|
|
346
347
|
details={"total_agents": len(agent_definitions)},
|
|
347
348
|
)
|
|
@@ -396,7 +397,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
396
397
|
if issues:
|
|
397
398
|
return DiagnosticResult(
|
|
398
399
|
category="Separation of Concerns",
|
|
399
|
-
status=
|
|
400
|
+
status=ValidationSeverity.WARNING,
|
|
400
401
|
message=f"Found {len(issues)} separation of concerns issue(s)",
|
|
401
402
|
details={"issues": issues},
|
|
402
403
|
fix_description=(
|
|
@@ -409,7 +410,7 @@ class InstructionsCheck(BaseDiagnosticCheck):
|
|
|
409
410
|
|
|
410
411
|
return DiagnosticResult(
|
|
411
412
|
category="Separation of Concerns",
|
|
412
|
-
status=
|
|
413
|
+
status=OperationResult.SUCCESS,
|
|
413
414
|
message="Instruction files properly separated",
|
|
414
415
|
details={},
|
|
415
416
|
)
|