claude-mpm 4.14.6__py3-none-any.whl → 4.21.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/VERSION +1 -1
- claude_mpm/agents/BASE_ENGINEER.md +286 -0
- claude_mpm/agents/BASE_PM.md +272 -23
- claude_mpm/agents/OUTPUT_STYLE.md +48 -3
- claude_mpm/agents/PM_INSTRUCTIONS.md +49 -0
- claude_mpm/agents/agent_loader.py +17 -5
- claude_mpm/agents/frontmatter_validator.py +284 -253
- claude_mpm/agents/templates/agentic-coder-optimizer.json +9 -2
- claude_mpm/agents/templates/api_qa.json +7 -1
- claude_mpm/agents/templates/clerk-ops.json +8 -1
- claude_mpm/agents/templates/code_analyzer.json +4 -1
- claude_mpm/agents/templates/dart_engineer.json +11 -1
- claude_mpm/agents/templates/data_engineer.json +11 -1
- claude_mpm/agents/templates/documentation.json +6 -1
- claude_mpm/agents/templates/engineer.json +18 -1
- claude_mpm/agents/templates/gcp_ops_agent.json +8 -1
- claude_mpm/agents/templates/golang_engineer.json +11 -1
- claude_mpm/agents/templates/java_engineer.json +12 -2
- claude_mpm/agents/templates/local_ops_agent.json +216 -37
- claude_mpm/agents/templates/nextjs_engineer.json +11 -1
- claude_mpm/agents/templates/ops.json +8 -1
- claude_mpm/agents/templates/php-engineer.json +20 -4
- claude_mpm/agents/templates/project_organizer.json +10 -3
- claude_mpm/agents/templates/prompt-engineer.json +5 -1
- claude_mpm/agents/templates/python_engineer.json +19 -4
- claude_mpm/agents/templates/qa.json +7 -1
- claude_mpm/agents/templates/react_engineer.json +11 -1
- claude_mpm/agents/templates/refactoring_engineer.json +8 -1
- claude_mpm/agents/templates/research.json +4 -1
- claude_mpm/agents/templates/ruby-engineer.json +11 -1
- claude_mpm/agents/templates/rust_engineer.json +23 -8
- claude_mpm/agents/templates/security.json +6 -1
- claude_mpm/agents/templates/svelte-engineer.json +225 -0
- claude_mpm/agents/templates/ticketing.json +6 -1
- claude_mpm/agents/templates/typescript_engineer.json +11 -1
- claude_mpm/agents/templates/vercel_ops_agent.json +8 -1
- claude_mpm/agents/templates/version_control.json +8 -1
- claude_mpm/agents/templates/web_qa.json +7 -1
- claude_mpm/agents/templates/web_ui.json +11 -1
- claude_mpm/cli/__init__.py +34 -740
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_manager.py +25 -12
- claude_mpm/cli/commands/agent_state_manager.py +186 -0
- claude_mpm/cli/commands/agents.py +204 -148
- claude_mpm/cli/commands/aggregate.py +7 -3
- claude_mpm/cli/commands/analyze.py +9 -4
- claude_mpm/cli/commands/analyze_code.py +7 -2
- claude_mpm/cli/commands/auto_configure.py +7 -9
- claude_mpm/cli/commands/config.py +47 -13
- claude_mpm/cli/commands/configure.py +294 -1788
- 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/local_deploy.py +3 -2
- claude_mpm/cli/commands/memory.py +54 -20
- 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 +75 -4
- claude_mpm/cli/commands/skills.py +488 -0
- claude_mpm/cli/executor.py +204 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +3 -0
- claude_mpm/cli/interactive/skills_wizard.py +491 -0
- claude_mpm/cli/parsers/base_parser.py +7 -0
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skills_parser.py +137 -0
- claude_mpm/cli/shared/output_formatters.py +28 -19
- claude_mpm/cli/startup.py +538 -0
- claude_mpm/commands/mpm-auto-configure.md +52 -0
- claude_mpm/commands/mpm-help.md +3 -0
- claude_mpm/commands/mpm-init.md +112 -6
- claude_mpm/commands/mpm-version.md +113 -0
- claude_mpm/commands/mpm.md +1 -0
- claude_mpm/config/agent_config.py +2 -2
- claude_mpm/constants.py +12 -0
- claude_mpm/core/base_service.py +13 -12
- claude_mpm/core/config.py +42 -0
- claude_mpm/core/enums.py +452 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/instruction_reinforcement_hook.py +2 -1
- claude_mpm/core/interactive_session.py +6 -3
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/oneshot_session.py +8 -4
- claude_mpm/core/optimized_agent_loader.py +3 -3
- claude_mpm/core/output_style_manager.py +12 -192
- claude_mpm/core/service_registry.py +5 -1
- claude_mpm/core/types.py +2 -9
- claude_mpm/core/typing_utils.py +7 -6
- claude_mpm/dashboard/static/js/dashboard.js +0 -14
- claude_mpm/dashboard/templates/index.html +3 -41
- claude_mpm/hooks/__init__.py +8 -0
- claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
- claude_mpm/hooks/instruction_reinforcement.py +7 -2
- claude_mpm/hooks/session_resume_hook.py +121 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/services/agents/auto_config_manager.py +10 -11
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
- claude_mpm/services/agents/deployment/agent_validator.py +17 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
- claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
- claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +7 -6
- 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 +5 -3
- 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/validation/__init__.py +3 -1
- claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
- claude_mpm/services/agents/local_template_manager.py +1 -1
- claude_mpm/services/agents/memory/agent_memory_manager.py +5 -2
- claude_mpm/services/agents/recommender.py +47 -0
- claude_mpm/services/agents/registry/modification_tracker.py +5 -2
- claude_mpm/services/cli/resume_service.py +617 -0
- claude_mpm/services/cli/session_manager.py +87 -0
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +372 -0
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/interfaces/process.py +6 -6
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/__init__.py +0 -2
- claude_mpm/services/core/models/agent_config.py +15 -28
- claude_mpm/services/core/models/health.py +1 -28
- claude_mpm/services/core/models/process.py +22 -41
- claude_mpm/services/core/path_resolver.py +1 -1
- claude_mpm/services/diagnostics/__init__.py +2 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +25 -24
- claude_mpm/services/diagnostics/checks/claude_code_check.py +24 -23
- claude_mpm/services/diagnostics/checks/common_issues_check.py +25 -24
- claude_mpm/services/diagnostics/checks/configuration_check.py +24 -23
- claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
- claude_mpm/services/diagnostics/checks/installation_check.py +30 -29
- claude_mpm/services/diagnostics/checks/instructions_check.py +20 -19
- claude_mpm/services/diagnostics/checks/mcp_check.py +50 -36
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +36 -31
- claude_mpm/services/diagnostics/checks/monitor_check.py +23 -22
- claude_mpm/services/diagnostics/checks/startup_log_check.py +9 -8
- claude_mpm/services/diagnostics/diagnostic_runner.py +6 -5
- claude_mpm/services/diagnostics/doctor_reporter.py +28 -25
- claude_mpm/services/diagnostics/models.py +37 -21
- 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 +7 -6
- 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 +5 -3
- claude_mpm/services/local_ops/crash_detector.py +1 -1
- claude_mpm/services/local_ops/health_checks/http_check.py +2 -1
- claude_mpm/services/local_ops/health_checks/process_check.py +2 -1
- claude_mpm/services/local_ops/health_checks/resource_check.py +2 -1
- claude_mpm/services/local_ops/health_manager.py +1 -1
- claude_mpm/services/local_ops/process_manager.py +12 -12
- claude_mpm/services/local_ops/restart_manager.py +1 -1
- claude_mpm/services/local_ops/state_manager.py +6 -5
- claude_mpm/services/local_ops/unified_manager.py +2 -2
- claude_mpm/services/mcp_config_manager.py +7 -126
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
- claude_mpm/services/mcp_gateway/core/base.py +18 -31
- claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +97 -45
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +30 -28
- claude_mpm/services/memory_hook_service.py +4 -1
- claude_mpm/services/monitor/daemon_manager.py +3 -2
- claude_mpm/services/monitor/handlers/dashboard.py +2 -1
- claude_mpm/services/monitor/handlers/hooks.py +2 -1
- claude_mpm/services/monitor/management/lifecycle.py +3 -2
- claude_mpm/services/monitor/server.py +2 -1
- claude_mpm/services/session_management_service.py +3 -2
- claude_mpm/services/session_manager.py +205 -1
- claude_mpm/services/shared/async_service_base.py +16 -27
- claude_mpm/services/shared/lifecycle_service_base.py +1 -14
- claude_mpm/services/socketio/handlers/__init__.py +5 -2
- claude_mpm/services/socketio/handlers/hook.py +13 -2
- claude_mpm/services/socketio/handlers/registry.py +4 -2
- claude_mpm/services/socketio/server/main.py +10 -8
- claude_mpm/services/subprocess_launcher_service.py +14 -5
- claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +6 -5
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +8 -7
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +7 -6
- claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +5 -4
- claude_mpm/services/unified/config_strategies/validation_strategy.py +13 -9
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +10 -3
- claude_mpm/services/unified/deployment_strategies/local.py +6 -5
- claude_mpm/services/unified/deployment_strategies/utils.py +6 -5
- claude_mpm/services/unified/deployment_strategies/vercel.py +7 -6
- claude_mpm/services/unified/interfaces.py +3 -1
- claude_mpm/services/unified/unified_analyzer.py +14 -10
- claude_mpm/services/unified/unified_config.py +2 -1
- claude_mpm/services/unified/unified_deployment.py +9 -4
- 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/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 +567 -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/tools/code_tree_analyzer.py +177 -141
- claude_mpm/tools/code_tree_events.py +4 -2
- claude_mpm/utils/agent_dependency_loader.py +2 -2
- {claude_mpm-4.14.6.dist-info → claude_mpm-4.21.0.dist-info}/METADATA +211 -33
- {claude_mpm-4.14.6.dist-info → claude_mpm-4.21.0.dist-info}/RECORD +339 -199
- claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
- claude_mpm/cli/commands/mpm_init.py +0 -1994
- claude_mpm/dashboard/static/css/code-tree.css +0 -1639
- claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
- claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1041
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
- claude_mpm/services/project/analyzer_refactored.py +0 -450
- {claude_mpm-4.14.6.dist-info → claude_mpm-4.21.0.dist-info}/WHEEL +0 -0
- {claude_mpm-4.14.6.dist-info → claude_mpm-4.21.0.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.14.6.dist-info → claude_mpm-4.21.0.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.14.6.dist-info → claude_mpm-4.21.0.dist-info}/top_level.txt +0 -0
|
@@ -3,56 +3,30 @@ Process Management Data Models for Claude MPM Framework
|
|
|
3
3
|
========================================================
|
|
4
4
|
|
|
5
5
|
WHY: This module defines data structures for process management operations,
|
|
6
|
-
including
|
|
6
|
+
including deployment state and runtime information.
|
|
7
7
|
|
|
8
8
|
DESIGN DECISION: Uses dataclasses for immutability and type safety. Provides
|
|
9
|
-
serialization methods for state persistence.
|
|
9
|
+
serialization methods for state persistence. Process status uses ServiceState
|
|
10
|
+
enum from core.enums (consolidated in Phase 3A Batch 24).
|
|
10
11
|
|
|
11
12
|
ARCHITECTURE:
|
|
12
|
-
- ProcessStatus: Enum of process lifecycle states
|
|
13
13
|
- DeploymentState: Complete deployment information for persistence
|
|
14
14
|
- ProcessInfo: Runtime process information
|
|
15
15
|
- StartConfig: Configuration for spawning new processes
|
|
16
|
+
|
|
17
|
+
Note: ProcessStatus enum has been consolidated into ServiceState (core.enums).
|
|
16
18
|
"""
|
|
17
19
|
|
|
18
20
|
import json
|
|
19
21
|
from dataclasses import asdict, dataclass, field
|
|
20
22
|
from datetime import datetime
|
|
21
|
-
from enum import Enum
|
|
22
23
|
from pathlib import Path
|
|
23
24
|
from typing import Any, Dict, List, Optional
|
|
24
25
|
|
|
26
|
+
from claude_mpm.core.enums import ServiceState
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Process lifecycle status.
|
|
29
|
-
|
|
30
|
-
WHY: Explicit status tracking enables proper state machine management
|
|
31
|
-
and prevents invalid state transitions.
|
|
32
|
-
|
|
33
|
-
States:
|
|
34
|
-
STARTING: Process is being spawned
|
|
35
|
-
RUNNING: Process is actively running
|
|
36
|
-
STOPPING: Process is shutting down
|
|
37
|
-
STOPPED: Process has stopped cleanly
|
|
38
|
-
CRASHED: Process terminated unexpectedly
|
|
39
|
-
UNKNOWN: Process state cannot be determined
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
STARTING = "starting"
|
|
43
|
-
RUNNING = "running"
|
|
44
|
-
STOPPING = "stopping"
|
|
45
|
-
STOPPED = "stopped"
|
|
46
|
-
CRASHED = "crashed"
|
|
47
|
-
UNKNOWN = "unknown"
|
|
48
|
-
|
|
49
|
-
def is_active(self) -> bool:
|
|
50
|
-
"""Check if status represents an active process."""
|
|
51
|
-
return self in (ProcessStatus.STARTING, ProcessStatus.RUNNING)
|
|
52
|
-
|
|
53
|
-
def is_terminal(self) -> bool:
|
|
54
|
-
"""Check if status represents a terminal state."""
|
|
55
|
-
return self in (ProcessStatus.STOPPED, ProcessStatus.CRASHED)
|
|
28
|
+
# Backward compatibility alias (consolidated in Phase 3A Batch 24)
|
|
29
|
+
ProcessStatus = ServiceState
|
|
56
30
|
|
|
57
31
|
|
|
58
32
|
@dataclass
|
|
@@ -71,7 +45,7 @@ class DeploymentState:
|
|
|
71
45
|
environment: Environment variables (beyond inherited ones)
|
|
72
46
|
port: Primary port used by the process (if applicable)
|
|
73
47
|
started_at: Timestamp when process was started
|
|
74
|
-
status: Current
|
|
48
|
+
status: Current ServiceState (process lifecycle state)
|
|
75
49
|
metadata: Additional deployment-specific information
|
|
76
50
|
"""
|
|
77
51
|
|
|
@@ -82,7 +56,7 @@ class DeploymentState:
|
|
|
82
56
|
environment: Dict[str, str] = field(default_factory=dict)
|
|
83
57
|
port: Optional[int] = None
|
|
84
58
|
started_at: datetime = field(default_factory=datetime.now)
|
|
85
|
-
status:
|
|
59
|
+
status: ServiceState = ServiceState.STARTING
|
|
86
60
|
metadata: Dict[str, Any] = field(default_factory=dict)
|
|
87
61
|
|
|
88
62
|
def to_dict(self) -> Dict[str, Any]:
|
|
@@ -114,7 +88,14 @@ class DeploymentState:
|
|
|
114
88
|
|
|
115
89
|
# Convert status string to enum
|
|
116
90
|
if isinstance(data.get("status"), str):
|
|
117
|
-
|
|
91
|
+
status_value = data["status"]
|
|
92
|
+
# Handle legacy "crashed" status -> map to ERROR
|
|
93
|
+
if status_value == "crashed":
|
|
94
|
+
data["status"] = (
|
|
95
|
+
ServiceState.ERROR
|
|
96
|
+
) # CRASHED semantically maps to ERROR state
|
|
97
|
+
else:
|
|
98
|
+
data["status"] = ServiceState(status_value)
|
|
118
99
|
|
|
119
100
|
return cls(**data)
|
|
120
101
|
|
|
@@ -153,18 +134,18 @@ class ProcessInfo:
|
|
|
153
134
|
Attributes:
|
|
154
135
|
deployment_id: Unique deployment identifier
|
|
155
136
|
process_id: OS process ID
|
|
156
|
-
status: Current
|
|
137
|
+
status: Current ServiceState (process lifecycle state)
|
|
157
138
|
port: Port the process is using
|
|
158
139
|
uptime_seconds: How long the process has been running
|
|
159
140
|
memory_mb: Current memory usage in megabytes
|
|
160
141
|
cpu_percent: Current CPU usage percentage
|
|
161
142
|
is_responding: Whether the process responds to health checks
|
|
162
|
-
error_message: Error message if status is
|
|
143
|
+
error_message: Error message if status is ERROR (crashed)
|
|
163
144
|
"""
|
|
164
145
|
|
|
165
146
|
deployment_id: str
|
|
166
147
|
process_id: int
|
|
167
|
-
status:
|
|
148
|
+
status: ServiceState
|
|
168
149
|
port: Optional[int] = None
|
|
169
150
|
uptime_seconds: float = 0.0
|
|
170
151
|
memory_mb: float = 0.0
|
|
@@ -252,7 +233,7 @@ __all__ = [
|
|
|
252
233
|
"PROTECTED_PORT_RANGES",
|
|
253
234
|
"DeploymentState",
|
|
254
235
|
"ProcessInfo",
|
|
255
|
-
"ProcessStatus",
|
|
236
|
+
"ProcessStatus", # Backward compatibility alias for ServiceState
|
|
256
237
|
"StartConfig",
|
|
257
238
|
"is_port_protected",
|
|
258
239
|
]
|
|
@@ -281,7 +281,7 @@ class PathResolver(IPathResolver):
|
|
|
281
281
|
|
|
282
282
|
if agents_dir and agents_dir.exists():
|
|
283
283
|
discovered_agents_dir = agents_dir
|
|
284
|
-
self.logger.
|
|
284
|
+
self.logger.debug(f"Using custom agents directory: {discovered_agents_dir}")
|
|
285
285
|
elif framework_path and framework_path != Path("__PACKAGED__"):
|
|
286
286
|
# Prioritize templates directory over main agents directory
|
|
287
287
|
templates_dir = (
|
|
@@ -13,6 +13,6 @@ DESIGN DECISIONS:
|
|
|
13
13
|
|
|
14
14
|
from .diagnostic_runner import DiagnosticRunner
|
|
15
15
|
from .doctor_reporter import DoctorReporter
|
|
16
|
-
from .models import DiagnosticResult
|
|
16
|
+
from .models import DiagnosticResult
|
|
17
17
|
|
|
18
|
-
__all__ = ["DiagnosticResult", "DiagnosticRunner", "
|
|
18
|
+
__all__ = ["DiagnosticResult", "DiagnosticRunner", "DoctorReporter"]
|
|
@@ -6,7 +6,8 @@ WHY: Verify that agents are properly deployed, up-to-date, and functioning corre
|
|
|
6
6
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from ....core.enums import OperationResult, ValidationSeverity
|
|
10
|
+
from ..models import DiagnosticResult
|
|
10
11
|
from .base_check import BaseDiagnosticCheck
|
|
11
12
|
|
|
12
13
|
|
|
@@ -64,29 +65,29 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
64
65
|
available_count = details["available_count"]
|
|
65
66
|
|
|
66
67
|
if deployed_count == 0:
|
|
67
|
-
status =
|
|
68
|
+
status = ValidationSeverity.ERROR
|
|
68
69
|
message = f"No agents deployed (0/{available_count} available)"
|
|
69
70
|
fix_command = "claude-mpm agents deploy"
|
|
70
71
|
fix_description = "Deploy all available agents"
|
|
71
72
|
elif deployed_count < available_count:
|
|
72
|
-
status =
|
|
73
|
+
status = ValidationSeverity.WARNING
|
|
73
74
|
message = f"{deployed_count}/{available_count} agents deployed"
|
|
74
75
|
fix_command = "claude-mpm agents deploy"
|
|
75
76
|
fix_description = (
|
|
76
77
|
f"Deploy remaining {available_count - deployed_count} agents"
|
|
77
78
|
)
|
|
78
|
-
elif any(r.status ==
|
|
79
|
-
status =
|
|
79
|
+
elif any(r.status == ValidationSeverity.ERROR for r in sub_results):
|
|
80
|
+
status = ValidationSeverity.ERROR
|
|
80
81
|
message = "Agents have critical issues"
|
|
81
82
|
fix_command = None
|
|
82
83
|
fix_description = None
|
|
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 = "Agents have minor issues"
|
|
86
87
|
fix_command = None
|
|
87
88
|
fix_description = None
|
|
88
89
|
else:
|
|
89
|
-
status =
|
|
90
|
+
status = OperationResult.SUCCESS
|
|
90
91
|
message = f"All {deployed_count} agents properly deployed"
|
|
91
92
|
fix_command = None
|
|
92
93
|
fix_description = None
|
|
@@ -104,7 +105,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
104
105
|
except Exception as e:
|
|
105
106
|
return DiagnosticResult(
|
|
106
107
|
category=self.category,
|
|
107
|
-
status=
|
|
108
|
+
status=ValidationSeverity.ERROR,
|
|
108
109
|
message=f"Agent check failed: {e!s}",
|
|
109
110
|
details={"error": str(e)},
|
|
110
111
|
)
|
|
@@ -127,7 +128,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
127
128
|
# Neither exists, default to user directory for error message
|
|
128
129
|
return DiagnosticResult(
|
|
129
130
|
category="Deployed Agents",
|
|
130
|
-
status=
|
|
131
|
+
status=ValidationSeverity.ERROR,
|
|
131
132
|
message="No agents directory found (checked project and user)",
|
|
132
133
|
details={
|
|
133
134
|
"project_path": str(project_agents_dir),
|
|
@@ -144,7 +145,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
144
145
|
if not agent_files:
|
|
145
146
|
return DiagnosticResult(
|
|
146
147
|
category="Deployed Agents",
|
|
147
|
-
status=
|
|
148
|
+
status=ValidationSeverity.ERROR,
|
|
148
149
|
message=f"No agents deployed in {location} directory",
|
|
149
150
|
details={"path": str(agents_dir), "location": location, "count": 0},
|
|
150
151
|
fix_command="claude-mpm agents deploy",
|
|
@@ -159,7 +160,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
159
160
|
if missing_core:
|
|
160
161
|
return DiagnosticResult(
|
|
161
162
|
category="Deployed Agents",
|
|
162
|
-
status=
|
|
163
|
+
status=ValidationSeverity.WARNING,
|
|
163
164
|
message=f"Missing core agents in {location}: {', '.join(missing_core)}",
|
|
164
165
|
details={
|
|
165
166
|
"path": str(agents_dir),
|
|
@@ -174,7 +175,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
174
175
|
|
|
175
176
|
return DiagnosticResult(
|
|
176
177
|
category="Deployed Agents",
|
|
177
|
-
status=
|
|
178
|
+
status=OperationResult.SUCCESS,
|
|
178
179
|
message=f"{len(agent_files)} agents deployed ({location} level)",
|
|
179
180
|
details={
|
|
180
181
|
"path": str(agents_dir),
|
|
@@ -205,7 +206,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
205
206
|
else:
|
|
206
207
|
return DiagnosticResult(
|
|
207
208
|
category="Agent Versions",
|
|
208
|
-
status=
|
|
209
|
+
status=OperationResult.SKIPPED,
|
|
209
210
|
message="No agents to check",
|
|
210
211
|
details={},
|
|
211
212
|
)
|
|
@@ -224,7 +225,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
224
225
|
if outdated:
|
|
225
226
|
return DiagnosticResult(
|
|
226
227
|
category="Agent Versions",
|
|
227
|
-
status=
|
|
228
|
+
status=ValidationSeverity.WARNING,
|
|
228
229
|
message=f"{len(outdated)} agent(s) outdated",
|
|
229
230
|
details={"outdated": outdated, "checked": checked},
|
|
230
231
|
fix_command="claude-mpm agents update",
|
|
@@ -234,14 +235,14 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
234
235
|
if checked == 0:
|
|
235
236
|
return DiagnosticResult(
|
|
236
237
|
category="Agent Versions",
|
|
237
|
-
status=
|
|
238
|
+
status=ValidationSeverity.WARNING,
|
|
238
239
|
message="No agents to check",
|
|
239
240
|
details={"checked": 0},
|
|
240
241
|
)
|
|
241
242
|
|
|
242
243
|
return DiagnosticResult(
|
|
243
244
|
category="Agent Versions",
|
|
244
|
-
status=
|
|
245
|
+
status=OperationResult.SUCCESS,
|
|
245
246
|
message=f"All {checked} agents up-to-date",
|
|
246
247
|
details={"checked": checked},
|
|
247
248
|
)
|
|
@@ -249,7 +250,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
249
250
|
except Exception as e:
|
|
250
251
|
return DiagnosticResult(
|
|
251
252
|
category="Agent Versions",
|
|
252
|
-
status=
|
|
253
|
+
status=ValidationSeverity.WARNING,
|
|
253
254
|
message=f"Could not check versions: {e!s}",
|
|
254
255
|
details={"error": str(e)},
|
|
255
256
|
)
|
|
@@ -273,7 +274,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
273
274
|
else:
|
|
274
275
|
return DiagnosticResult(
|
|
275
276
|
category="Agent Validation",
|
|
276
|
-
status=
|
|
277
|
+
status=OperationResult.SKIPPED,
|
|
277
278
|
message="No agents to validate",
|
|
278
279
|
details={},
|
|
279
280
|
)
|
|
@@ -301,14 +302,14 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
301
302
|
if invalid:
|
|
302
303
|
return DiagnosticResult(
|
|
303
304
|
category="Agent Validation",
|
|
304
|
-
status=
|
|
305
|
+
status=ValidationSeverity.WARNING,
|
|
305
306
|
message=f"{len(invalid)} validation issue(s)",
|
|
306
307
|
details={"issues": invalid, "validated": validated},
|
|
307
308
|
)
|
|
308
309
|
|
|
309
310
|
return DiagnosticResult(
|
|
310
311
|
category="Agent Validation",
|
|
311
|
-
status=
|
|
312
|
+
status=OperationResult.SUCCESS,
|
|
312
313
|
message=f"All {validated} agents valid",
|
|
313
314
|
details={"validated": validated},
|
|
314
315
|
)
|
|
@@ -316,7 +317,7 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
316
317
|
except Exception as e:
|
|
317
318
|
return DiagnosticResult(
|
|
318
319
|
category="Agent Validation",
|
|
319
|
-
status=
|
|
320
|
+
status=ValidationSeverity.WARNING,
|
|
320
321
|
message=f"Validation failed: {e!s}",
|
|
321
322
|
details={"error": str(e)},
|
|
322
323
|
)
|
|
@@ -358,14 +359,14 @@ class AgentCheck(BaseDiagnosticCheck):
|
|
|
358
359
|
if issues:
|
|
359
360
|
return DiagnosticResult(
|
|
360
361
|
category="Common Issues",
|
|
361
|
-
status=
|
|
362
|
+
status=ValidationSeverity.WARNING,
|
|
362
363
|
message=f"{len(issues)} issue(s) found",
|
|
363
364
|
details={"issues": issues},
|
|
364
365
|
)
|
|
365
366
|
|
|
366
367
|
return DiagnosticResult(
|
|
367
368
|
category="Common Issues",
|
|
368
|
-
status=
|
|
369
|
+
status=OperationResult.SUCCESS,
|
|
369
370
|
message="No common issues detected",
|
|
370
371
|
details={},
|
|
371
372
|
)
|
|
@@ -9,7 +9,8 @@ import json
|
|
|
9
9
|
import subprocess
|
|
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
|
|
|
@@ -33,9 +34,9 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
33
34
|
# Check if Claude Code CLI is installed
|
|
34
35
|
install_result = self._check_installation()
|
|
35
36
|
sub_results.append(install_result)
|
|
36
|
-
details["installed"] = install_result.status ==
|
|
37
|
+
details["installed"] = install_result.status == OperationResult.SUCCESS
|
|
37
38
|
|
|
38
|
-
if install_result.status ==
|
|
39
|
+
if install_result.status == OperationResult.SUCCESS:
|
|
39
40
|
# Check version compatibility
|
|
40
41
|
version_result = self._check_version()
|
|
41
42
|
sub_results.append(version_result)
|
|
@@ -49,17 +50,17 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
49
50
|
# Check MCP integration
|
|
50
51
|
mcp_result = self._check_mcp_integration()
|
|
51
52
|
sub_results.append(mcp_result)
|
|
52
|
-
details["mcp_configured"] = mcp_result.status ==
|
|
53
|
+
details["mcp_configured"] = mcp_result.status == OperationResult.SUCCESS
|
|
53
54
|
|
|
54
55
|
# Determine overall status
|
|
55
|
-
if any(r.status ==
|
|
56
|
-
status =
|
|
56
|
+
if any(r.status == ValidationSeverity.ERROR for r in sub_results):
|
|
57
|
+
status = ValidationSeverity.ERROR
|
|
57
58
|
message = "Claude Code CLI has critical issues"
|
|
58
|
-
elif any(r.status ==
|
|
59
|
-
status =
|
|
59
|
+
elif any(r.status == ValidationSeverity.WARNING for r in sub_results):
|
|
60
|
+
status = ValidationSeverity.WARNING
|
|
60
61
|
message = "Claude Code CLI needs configuration"
|
|
61
62
|
else:
|
|
62
|
-
status =
|
|
63
|
+
status = OperationResult.SUCCESS
|
|
63
64
|
message = "Claude Code CLI properly configured"
|
|
64
65
|
|
|
65
66
|
return DiagnosticResult(
|
|
@@ -73,7 +74,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
73
74
|
except Exception as e:
|
|
74
75
|
return DiagnosticResult(
|
|
75
76
|
category=self.category,
|
|
76
|
-
status=
|
|
77
|
+
status=ValidationSeverity.ERROR,
|
|
77
78
|
message=f"Claude Code CLI check failed: {e!s}",
|
|
78
79
|
details={"error": str(e)},
|
|
79
80
|
)
|
|
@@ -92,7 +93,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
92
93
|
if result.returncode == 0:
|
|
93
94
|
return DiagnosticResult(
|
|
94
95
|
category="Claude Code CLI Installation",
|
|
95
|
-
status=
|
|
96
|
+
status=OperationResult.SUCCESS,
|
|
96
97
|
message="Claude Code CLI is installed and accessible",
|
|
97
98
|
details={
|
|
98
99
|
"installed": True,
|
|
@@ -115,14 +116,14 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
115
116
|
if path.exists() and path.is_file():
|
|
116
117
|
return DiagnosticResult(
|
|
117
118
|
category="Claude Code CLI Installation",
|
|
118
|
-
status=
|
|
119
|
+
status=OperationResult.SUCCESS,
|
|
119
120
|
message=f"Claude Code CLI found at {path}",
|
|
120
121
|
details={"installed": True, "path": str(path)},
|
|
121
122
|
)
|
|
122
123
|
|
|
123
124
|
return DiagnosticResult(
|
|
124
125
|
category="Claude Code CLI Installation",
|
|
125
|
-
status=
|
|
126
|
+
status=ValidationSeverity.ERROR,
|
|
126
127
|
message="Claude Code CLI not found",
|
|
127
128
|
details={"installed": False},
|
|
128
129
|
fix_description="Install Claude Code CLI from https://claude.ai/code",
|
|
@@ -150,7 +151,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
150
151
|
break
|
|
151
152
|
|
|
152
153
|
# Check minimum version requirement (1.0.60+)
|
|
153
|
-
status =
|
|
154
|
+
status = OperationResult.SUCCESS
|
|
154
155
|
message = f"Version: {version}"
|
|
155
156
|
|
|
156
157
|
return DiagnosticResult(
|
|
@@ -166,7 +167,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
166
167
|
except subprocess.SubprocessError as e:
|
|
167
168
|
return DiagnosticResult(
|
|
168
169
|
category="Claude Code CLI Version",
|
|
169
|
-
status=
|
|
170
|
+
status=ValidationSeverity.WARNING,
|
|
170
171
|
message=f"Could not determine version: {e}",
|
|
171
172
|
details={"version": "unknown", "error": str(e)},
|
|
172
173
|
)
|
|
@@ -178,7 +179,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
178
179
|
if not style_path.exists():
|
|
179
180
|
return DiagnosticResult(
|
|
180
181
|
category="Output Style",
|
|
181
|
-
status=
|
|
182
|
+
status=ValidationSeverity.WARNING,
|
|
182
183
|
message="Output style not deployed",
|
|
183
184
|
details={"deployed": False, "path": str(style_path)},
|
|
184
185
|
fix_command="claude-mpm deploy-style",
|
|
@@ -192,13 +193,13 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
192
193
|
if "Claude MPM Output Style" in content:
|
|
193
194
|
return DiagnosticResult(
|
|
194
195
|
category="Output Style",
|
|
195
|
-
status=
|
|
196
|
+
status=OperationResult.SUCCESS,
|
|
196
197
|
message="Output style deployed",
|
|
197
198
|
details={"deployed": True, "path": str(style_path)},
|
|
198
199
|
)
|
|
199
200
|
return DiagnosticResult(
|
|
200
201
|
category="Output Style",
|
|
201
|
-
status=
|
|
202
|
+
status=ValidationSeverity.WARNING,
|
|
202
203
|
message="Output style outdated",
|
|
203
204
|
details={
|
|
204
205
|
"deployed": True,
|
|
@@ -211,7 +212,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
211
212
|
except Exception as e:
|
|
212
213
|
return DiagnosticResult(
|
|
213
214
|
category="Output Style",
|
|
214
|
-
status=
|
|
215
|
+
status=ValidationSeverity.WARNING,
|
|
215
216
|
message=f"Could not check output style: {e!s}",
|
|
216
217
|
details={"error": str(e)},
|
|
217
218
|
)
|
|
@@ -224,7 +225,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
224
225
|
if not config_path.exists():
|
|
225
226
|
return DiagnosticResult(
|
|
226
227
|
category="MCP Integration",
|
|
227
|
-
status=
|
|
228
|
+
status=ValidationSeverity.WARNING,
|
|
228
229
|
message="Claude Code CLI config not found",
|
|
229
230
|
details={"configured": False, "config_path": str(config_path)},
|
|
230
231
|
fix_command="claude-mpm mcp install",
|
|
@@ -239,7 +240,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
239
240
|
if "claude-mpm-gateway" in mcp_servers or "claude-mpm" in mcp_servers:
|
|
240
241
|
return DiagnosticResult(
|
|
241
242
|
category="MCP Integration",
|
|
242
|
-
status=
|
|
243
|
+
status=OperationResult.SUCCESS,
|
|
243
244
|
message="MCP server configured",
|
|
244
245
|
details={
|
|
245
246
|
"configured": True,
|
|
@@ -249,7 +250,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
249
250
|
)
|
|
250
251
|
return DiagnosticResult(
|
|
251
252
|
category="MCP Integration",
|
|
252
|
-
status=
|
|
253
|
+
status=ValidationSeverity.WARNING,
|
|
253
254
|
message="MCP server not configured",
|
|
254
255
|
details={
|
|
255
256
|
"configured": False,
|
|
@@ -263,7 +264,7 @@ class ClaudeCodeCheck(BaseDiagnosticCheck):
|
|
|
263
264
|
except Exception as e:
|
|
264
265
|
return DiagnosticResult(
|
|
265
266
|
category="MCP Integration",
|
|
266
|
-
status=
|
|
267
|
+
status=ValidationSeverity.WARNING,
|
|
267
268
|
message=f"Could not check MCP configuration: {e!s}",
|
|
268
269
|
details={"error": str(e)},
|
|
269
270
|
)
|