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.
- 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
claude_mpm/commands/mpm-init.md
CHANGED
|
@@ -9,6 +9,9 @@ Initialize or intelligently update your project for optimal use with Claude Code
|
|
|
9
9
|
/mpm-init update # Lightweight update based on recent git activity
|
|
10
10
|
/mpm-init context # Intelligent context analysis from git history
|
|
11
11
|
/mpm-init context --days 14 # Analyze last 14 days of git history
|
|
12
|
+
/mpm-init resume # Resume from stop event logs (NEW)
|
|
13
|
+
/mpm-init resume --list # List all sessions from logs
|
|
14
|
+
/mpm-init resume --session-id ID # Resume specific session
|
|
12
15
|
/mpm-init catchup # Quick commit history display (no analysis)
|
|
13
16
|
/mpm-init --review # Review project state without changes
|
|
14
17
|
/mpm-init --update # Full update of existing CLAUDE.md
|
|
@@ -24,7 +27,9 @@ This command has two primary modes:
|
|
|
24
27
|
- **Project initialization/updates**: Delegates to the Agentic Coder Optimizer agent for documentation, tooling, and workflow setup
|
|
25
28
|
- **Context analysis** (context/catchup): Provides intelligent project context from git history for resuming work
|
|
26
29
|
|
|
27
|
-
**
|
|
30
|
+
**Resume Modes**: The command provides two resume capabilities:
|
|
31
|
+
- `/mpm-init resume`: Reads stop event logs from `.claude-mpm/responses/` to help resume work
|
|
32
|
+
- `/mpm-init context`: Analyzes git history for intelligent work resumption (delegates to Research agent)
|
|
28
33
|
|
|
29
34
|
**Quick Update Mode**: Running `/mpm-init update` performs a lightweight update focused on recent git activity. It analyzes recent commits, generates an activity report, and updates documentation with minimal changes. Perfect for quick refreshes after development sprints.
|
|
30
35
|
|
|
@@ -87,8 +92,46 @@ Analyzes recent git commits to identify:
|
|
|
87
92
|
|
|
88
93
|
**NOT session state**: This does NOT save/restore conversation state like Claude Code. Instead, it reconstructs project context from git history using conventional commits and commit message analysis.
|
|
89
94
|
|
|
90
|
-
#### `/mpm-init resume`
|
|
91
|
-
|
|
95
|
+
#### `/mpm-init resume` (Stop Event Logs)
|
|
96
|
+
```bash
|
|
97
|
+
/mpm-init resume # Show latest session from logs
|
|
98
|
+
/mpm-init resume --list # List all sessions
|
|
99
|
+
/mpm-init resume --session-id ID # Resume specific session
|
|
100
|
+
/mpm-init resume --last 5 # Show last 5 sessions
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Reads from stop event logs to help resume work from previous sessions:
|
|
104
|
+
|
|
105
|
+
**Data Sources** (two-tier strategy):
|
|
106
|
+
1. **Resume logs** (preferred): `.claude-mpm/resume-logs/*.md` - Structured 10k-token summaries
|
|
107
|
+
2. **Response logs** (fallback): `.claude-mpm/responses/*.json` - Raw conversation stop events
|
|
108
|
+
|
|
109
|
+
**What it shows**:
|
|
110
|
+
- When session ended (time ago)
|
|
111
|
+
- What was being worked on (request)
|
|
112
|
+
- Tasks completed (from PM responses)
|
|
113
|
+
- Files modified (from PM tracking)
|
|
114
|
+
- Next steps (from PM recommendations)
|
|
115
|
+
- Stop reason (why session ended)
|
|
116
|
+
- Token usage (context consumption)
|
|
117
|
+
- Git context (branch, working directory)
|
|
118
|
+
|
|
119
|
+
**How it works**:
|
|
120
|
+
1. Scans response logs in `.claude-mpm/responses/`
|
|
121
|
+
2. Groups by `session_id`
|
|
122
|
+
3. Parses PM response JSON for context
|
|
123
|
+
4. Extracts tasks, files, next steps from PM summaries
|
|
124
|
+
5. Displays comprehensive resume context
|
|
125
|
+
|
|
126
|
+
**Use Cases**:
|
|
127
|
+
- Resume work after context threshold pause
|
|
128
|
+
- Review what was accomplished in previous session
|
|
129
|
+
- Understand why session stopped (max_tokens, end_turn, etc.)
|
|
130
|
+
- See exact files and tasks from last session
|
|
131
|
+
|
|
132
|
+
**Difference from `context`**:
|
|
133
|
+
- **resume**: Reads actual stop event logs (what PM logged)
|
|
134
|
+
- **context**: Analyzes git commits (what was committed)
|
|
92
135
|
|
|
93
136
|
### `/mpm-init catchup` (Simple Git History)
|
|
94
137
|
```bash
|
|
@@ -225,6 +268,66 @@ This provides intelligent analysis including:
|
|
|
225
268
|
|
|
226
269
|
The old `resume` command redirects to `context` with a deprecation warning.
|
|
227
270
|
|
|
271
|
+
### Resume from Stop Event Logs
|
|
272
|
+
|
|
273
|
+
Display context from previous sessions using stop event logs:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
/mpm-init resume # Show latest session
|
|
277
|
+
/mpm-init resume --list # List all available sessions
|
|
278
|
+
/mpm-init resume --session-id abc123 # Resume specific session
|
|
279
|
+
/mpm-init resume --last 10 # Show last 10 sessions
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Shows comprehensive context including:
|
|
283
|
+
- What was being worked on
|
|
284
|
+
- Tasks completed (from PM tracking)
|
|
285
|
+
- Files modified
|
|
286
|
+
- Next steps recommended
|
|
287
|
+
- Stop reason (context limit, completion, etc.)
|
|
288
|
+
- Token usage
|
|
289
|
+
- Time elapsed since session
|
|
290
|
+
|
|
291
|
+
**Example Output:**
|
|
292
|
+
```
|
|
293
|
+
================================================================================
|
|
294
|
+
📋 Resume Context - Session from 2 hours ago
|
|
295
|
+
================================================================================
|
|
296
|
+
|
|
297
|
+
Session ID: 20251104_143000
|
|
298
|
+
Ended: 2024-11-04 14:30 (2 hours ago)
|
|
299
|
+
Stop Reason: Context threshold reached (70%)
|
|
300
|
+
Token Usage: 140,000 / 200,000 (70%)
|
|
301
|
+
|
|
302
|
+
Working on:
|
|
303
|
+
"Implementing auto-pause and resume functionality"
|
|
304
|
+
|
|
305
|
+
✅ Completed:
|
|
306
|
+
• Researched stop event logging system
|
|
307
|
+
• Found response logs in .claude-mpm/responses/
|
|
308
|
+
• Identified two-tier resume strategy
|
|
309
|
+
|
|
310
|
+
📝 Files Modified:
|
|
311
|
+
• src/claude_mpm/services/cli/resume_service.py (new)
|
|
312
|
+
• src/claude_mpm/cli/commands/mpm_init/ (refactored into package)
|
|
313
|
+
|
|
314
|
+
🎯 Next Steps:
|
|
315
|
+
• Implement ResumeService class
|
|
316
|
+
• Add resume subcommand to mpm-init
|
|
317
|
+
• Test with real response logs
|
|
318
|
+
|
|
319
|
+
Git Context:
|
|
320
|
+
Branch: main
|
|
321
|
+
Working Directory: /Users/masa/Projects/claude-mpm
|
|
322
|
+
================================================================================
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Use Cases:**
|
|
326
|
+
- Resume after hitting context limit
|
|
327
|
+
- Review what was accomplished in last session
|
|
328
|
+
- See exact next steps recommended by PM
|
|
329
|
+
- Understand why session stopped
|
|
330
|
+
|
|
228
331
|
### Quick Git History (Catchup)
|
|
229
332
|
|
|
230
333
|
Display recent commit history without analysis:
|
|
@@ -388,9 +491,12 @@ The command delegates to the Agentic Coder Optimizer agent which:
|
|
|
388
491
|
## Notes
|
|
389
492
|
|
|
390
493
|
- **Quick Update vs Full Update**: Use `/mpm-init update` for fast activity-based updates (30 days), or `/mpm-init --update` for comprehensive doc refresh
|
|
391
|
-
- **
|
|
392
|
-
-
|
|
393
|
-
-
|
|
494
|
+
- **Resume Strategies**:
|
|
495
|
+
- **`/mpm-init resume`**: Read stop event logs (what PM tracked in last session)
|
|
496
|
+
- **`/mpm-init context`**: Analyze git history (intelligent work stream analysis via Research)
|
|
497
|
+
- **`/mpm-init catchup`**: Quick commit history display (no analysis)
|
|
498
|
+
- **Stop Event Logs**: Response logs in `.claude-mpm/responses/` contain PM summaries with tasks, files, and next steps
|
|
499
|
+
- **Two-Tier Resume**: Prefers structured resume logs (`.claude-mpm/resume-logs/`), falls back to response logs
|
|
394
500
|
- **Smart Mode**: Automatically detects existing CLAUDE.md and offers update vs recreate
|
|
395
501
|
- **Safe Updates**: Previous versions always archived before updating
|
|
396
502
|
- **Custom Content**: Your project-specific sections are preserved by default
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Display Claude MPM Version Information
|
|
2
|
+
|
|
3
|
+
Show comprehensive version information for Claude MPM project, agents, and skills.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/mpm-version
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
Display version information including:
|
|
14
|
+
- Project version and build number
|
|
15
|
+
- All deployed agents with their versions (grouped by tier: system/user/project)
|
|
16
|
+
- All available skills with their versions (grouped by source: bundled/user/project)
|
|
17
|
+
- Summary statistics
|
|
18
|
+
|
|
19
|
+
## Implementation
|
|
20
|
+
|
|
21
|
+
When you run `/mpm-version`, the PM will:
|
|
22
|
+
|
|
23
|
+
1. **Collect Version Information**
|
|
24
|
+
- Use VersionService to gather all version data
|
|
25
|
+
- Project version from pyproject.toml
|
|
26
|
+
- Build number from BUILD_NUMBER file
|
|
27
|
+
- Agent versions from AgentRegistry
|
|
28
|
+
- Skills versions from SkillRegistry
|
|
29
|
+
|
|
30
|
+
2. **Format Output**
|
|
31
|
+
- Hierarchical display: Project → Agents → Skills
|
|
32
|
+
- Grouped by tier/source for clarity
|
|
33
|
+
- Sorted alphabetically within groups
|
|
34
|
+
- Summary statistics at the end
|
|
35
|
+
|
|
36
|
+
3. **Display Results**
|
|
37
|
+
- Well-formatted tree structure
|
|
38
|
+
- Easy to scan and read
|
|
39
|
+
- Includes totals and counts
|
|
40
|
+
|
|
41
|
+
## Example Output
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Claude MPM Version Information
|
|
45
|
+
==============================
|
|
46
|
+
|
|
47
|
+
Project Version: 4.16.3
|
|
48
|
+
Build: 481
|
|
49
|
+
|
|
50
|
+
Agents (35 total)
|
|
51
|
+
-----------------
|
|
52
|
+
|
|
53
|
+
System Agents (30):
|
|
54
|
+
├─ agent-manager (1.0.0)
|
|
55
|
+
├─ engineer (3.9.1)
|
|
56
|
+
├─ research-agent (4.5.1)
|
|
57
|
+
├─ documentation (2.1.0)
|
|
58
|
+
├─ qa (2.0.3)
|
|
59
|
+
└─ ... (25 more)
|
|
60
|
+
|
|
61
|
+
User Agents (3):
|
|
62
|
+
├─ custom-agent (1.0.0)
|
|
63
|
+
├─ testing-agent (0.5.0)
|
|
64
|
+
└─ prototype-agent (0.1.0)
|
|
65
|
+
|
|
66
|
+
Project Agents (2):
|
|
67
|
+
├─ project-specific (2.0.0)
|
|
68
|
+
└─ domain-expert (1.1.0)
|
|
69
|
+
|
|
70
|
+
Skills (20 total)
|
|
71
|
+
-----------------
|
|
72
|
+
|
|
73
|
+
Bundled Skills (20):
|
|
74
|
+
├─ test-driven-development (0.1.0)
|
|
75
|
+
├─ systematic-debugging (0.1.0)
|
|
76
|
+
├─ async-testing (0.1.0)
|
|
77
|
+
├─ performance-profiling (0.1.0)
|
|
78
|
+
├─ security-scanning (0.1.0)
|
|
79
|
+
└─ ... (15 more)
|
|
80
|
+
|
|
81
|
+
User Skills (0):
|
|
82
|
+
(none)
|
|
83
|
+
|
|
84
|
+
Project Skills (0):
|
|
85
|
+
(none)
|
|
86
|
+
|
|
87
|
+
Summary
|
|
88
|
+
-------
|
|
89
|
+
• Project: v4.16.3 (build 481)
|
|
90
|
+
• Agents: 35 total (30 system, 3 user, 2 project)
|
|
91
|
+
• Skills: 20 total (20 bundled, 0 user, 0 project)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## PM Implementation Instructions
|
|
95
|
+
|
|
96
|
+
To execute this command, PM should:
|
|
97
|
+
|
|
98
|
+
1. Import and use VersionService:
|
|
99
|
+
```python
|
|
100
|
+
from claude_mpm.services.version_service import VersionService
|
|
101
|
+
|
|
102
|
+
service = VersionService()
|
|
103
|
+
summary = service.get_version_summary()
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
2. Format output following the example structure above
|
|
107
|
+
3. Handle missing data gracefully (show "unknown" for missing versions)
|
|
108
|
+
4. Include all tiers/sources even if counts are zero
|
|
109
|
+
|
|
110
|
+
## Related Commands
|
|
111
|
+
|
|
112
|
+
- `/mpm-help` - Show all available MPM commands
|
|
113
|
+
- `/mpm-status` - Show system status information
|
claude_mpm/commands/mpm.md
CHANGED
|
@@ -8,6 +8,7 @@ Available MPM commands:
|
|
|
8
8
|
- /mpm-help - Show command help
|
|
9
9
|
- /mpm-status - Show MPM status
|
|
10
10
|
- /mpm-config - Manage configuration
|
|
11
|
+
- /mpm-version - Display version information for project, agents, and skills
|
|
11
12
|
|
|
12
13
|
Claude MPM extends Claude Code with:
|
|
13
14
|
- Multi-agent orchestration
|
|
@@ -242,7 +242,7 @@ class AgentConfig:
|
|
|
242
242
|
Path.cwd() / get_path_manager().CONFIG_DIR / "agent_config.yaml"
|
|
243
243
|
)
|
|
244
244
|
if project_config.exists():
|
|
245
|
-
logger.
|
|
245
|
+
logger.debug(f"Loading project agent config from {project_config}")
|
|
246
246
|
file_config = cls.from_file(project_config)
|
|
247
247
|
# Merge with environment config (env takes precedence)
|
|
248
248
|
config = cls._merge_configs(config, file_config)
|
|
@@ -252,7 +252,7 @@ class AgentConfig:
|
|
|
252
252
|
if user_config_dir:
|
|
253
253
|
user_config = user_config_dir / "agent_config.yaml"
|
|
254
254
|
if user_config.exists():
|
|
255
|
-
logger.
|
|
255
|
+
logger.debug(f"Loading user agent config from {user_config}")
|
|
256
256
|
file_config = cls.from_file(user_config)
|
|
257
257
|
config = cls._merge_configs(config, file_config)
|
|
258
258
|
|
claude_mpm/constants.py
CHANGED
|
@@ -45,6 +45,7 @@ class CLICommands(str, Enum):
|
|
|
45
45
|
DOCTOR = "doctor"
|
|
46
46
|
DASHBOARD = "dashboard"
|
|
47
47
|
UPGRADE = "upgrade"
|
|
48
|
+
SKILLS = "skills"
|
|
48
49
|
|
|
49
50
|
def with_prefix(self, prefix: CLIPrefix = CLIPrefix.MPM) -> str:
|
|
50
51
|
"""Get command with prefix."""
|
|
@@ -158,6 +159,17 @@ class TicketCommands(str, Enum):
|
|
|
158
159
|
WORKFLOW = "workflow"
|
|
159
160
|
|
|
160
161
|
|
|
162
|
+
class SkillsCommands(str, Enum):
|
|
163
|
+
"""Skills subcommand constants."""
|
|
164
|
+
|
|
165
|
+
LIST = "list"
|
|
166
|
+
DEPLOY = "deploy"
|
|
167
|
+
VALIDATE = "validate"
|
|
168
|
+
UPDATE = "update"
|
|
169
|
+
INFO = "info"
|
|
170
|
+
CONFIG = "config"
|
|
171
|
+
|
|
172
|
+
|
|
161
173
|
class CLIFlags(str, Enum):
|
|
162
174
|
"""CLI flag constants (without prefix)."""
|
|
163
175
|
|
claude_mpm/core/base_service.py
CHANGED
|
@@ -31,6 +31,7 @@ from pathlib import Path
|
|
|
31
31
|
from typing import Any, Dict, List, Optional
|
|
32
32
|
|
|
33
33
|
from .config import Config
|
|
34
|
+
from .enums import HealthStatus
|
|
34
35
|
from .mixins import LoggerMixin
|
|
35
36
|
|
|
36
37
|
|
|
@@ -38,7 +39,7 @@ from .mixins import LoggerMixin
|
|
|
38
39
|
class ServiceHealth:
|
|
39
40
|
"""Service health status information."""
|
|
40
41
|
|
|
41
|
-
status:
|
|
42
|
+
status: HealthStatus # Type-safe health status using enum
|
|
42
43
|
message: str
|
|
43
44
|
timestamp: str
|
|
44
45
|
metrics: Dict[str, Any] = field(default_factory=dict)
|
|
@@ -142,7 +143,7 @@ class BaseService(LoggerMixin, ABC):
|
|
|
142
143
|
|
|
143
144
|
# Health and metrics
|
|
144
145
|
self._health = ServiceHealth(
|
|
145
|
-
status=
|
|
146
|
+
status=HealthStatus.UNKNOWN,
|
|
146
147
|
message="Service not started",
|
|
147
148
|
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
148
149
|
)
|
|
@@ -235,7 +236,7 @@ class BaseService(LoggerMixin, ABC):
|
|
|
235
236
|
except Exception as e:
|
|
236
237
|
self.logger.error(f"Failed to start service {self.name}: {e}")
|
|
237
238
|
self._health = ServiceHealth(
|
|
238
|
-
status=
|
|
239
|
+
status=HealthStatus.UNHEALTHY,
|
|
239
240
|
message=f"Startup failed: {e!s}",
|
|
240
241
|
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
241
242
|
checks={"startup": False},
|
|
@@ -272,7 +273,7 @@ class BaseService(LoggerMixin, ABC):
|
|
|
272
273
|
|
|
273
274
|
# Update health status
|
|
274
275
|
self._health = ServiceHealth(
|
|
275
|
-
status=
|
|
276
|
+
status=HealthStatus.HEALTHY,
|
|
276
277
|
message="Service started successfully",
|
|
277
278
|
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
278
279
|
checks={"startup": True},
|
|
@@ -336,7 +337,7 @@ class BaseService(LoggerMixin, ABC):
|
|
|
336
337
|
|
|
337
338
|
# Update health status
|
|
338
339
|
self._health = ServiceHealth(
|
|
339
|
-
status=
|
|
340
|
+
status=HealthStatus.UNKNOWN,
|
|
340
341
|
message="Service stopped",
|
|
341
342
|
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
342
343
|
checks={"running": False},
|
|
@@ -372,16 +373,16 @@ class BaseService(LoggerMixin, ABC):
|
|
|
372
373
|
|
|
373
374
|
# Determine overall status
|
|
374
375
|
if not checks["running"]:
|
|
375
|
-
status =
|
|
376
|
+
status = HealthStatus.UNHEALTHY
|
|
376
377
|
message = "Service is not running"
|
|
377
378
|
elif all(checks.values()):
|
|
378
|
-
status =
|
|
379
|
+
status = HealthStatus.HEALTHY
|
|
379
380
|
message = "All health checks passed"
|
|
380
381
|
elif any(checks.values()):
|
|
381
|
-
status =
|
|
382
|
+
status = HealthStatus.DEGRADED
|
|
382
383
|
message = "Some health checks failed"
|
|
383
384
|
else:
|
|
384
|
-
status =
|
|
385
|
+
status = HealthStatus.UNHEALTHY
|
|
385
386
|
message = "Multiple health checks failed"
|
|
386
387
|
|
|
387
388
|
# Update health status
|
|
@@ -402,7 +403,7 @@ class BaseService(LoggerMixin, ABC):
|
|
|
402
403
|
except Exception as e:
|
|
403
404
|
self.logger.error(f"Health check failed for {self.name}: {e}")
|
|
404
405
|
self._health = ServiceHealth(
|
|
405
|
-
status=
|
|
406
|
+
status=HealthStatus.UNHEALTHY,
|
|
406
407
|
message=f"Health check error: {e!s}",
|
|
407
408
|
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
408
409
|
checks={"health_check_error": True},
|
|
@@ -593,7 +594,7 @@ class BaseService(LoggerMixin, ABC):
|
|
|
593
594
|
)
|
|
594
595
|
else:
|
|
595
596
|
return ServiceHealth(
|
|
596
|
-
status=
|
|
597
|
+
status=HealthStatus.DEGRADED,
|
|
597
598
|
message="Service circuit breaker is open",
|
|
598
599
|
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
599
600
|
checks={"circuit_breaker": False},
|
|
@@ -604,7 +605,7 @@ class BaseService(LoggerMixin, ABC):
|
|
|
604
605
|
health = await self.health_check()
|
|
605
606
|
|
|
606
607
|
# Update circuit breaker
|
|
607
|
-
if health.status in
|
|
608
|
+
if health.status in (HealthStatus.HEALTHY, HealthStatus.DEGRADED):
|
|
608
609
|
self._record_circuit_success()
|
|
609
610
|
else:
|
|
610
611
|
self._record_circuit_failure()
|
claude_mpm/core/config.py
CHANGED
|
@@ -578,6 +578,11 @@ class Config:
|
|
|
578
578
|
"[PM-REMINDER] Your role is coordination and management",
|
|
579
579
|
],
|
|
580
580
|
},
|
|
581
|
+
# Session management configuration
|
|
582
|
+
"session": {
|
|
583
|
+
"auto_save": True, # Enable automatic session saving
|
|
584
|
+
"save_interval": 300, # Auto-save interval in seconds (5 minutes)
|
|
585
|
+
},
|
|
581
586
|
}
|
|
582
587
|
|
|
583
588
|
# Apply defaults for missing keys
|
|
@@ -588,6 +593,9 @@ class Config:
|
|
|
588
593
|
# Validate health and recovery configuration
|
|
589
594
|
self._validate_health_recovery_config()
|
|
590
595
|
|
|
596
|
+
# Validate session configuration
|
|
597
|
+
self._validate_session_config()
|
|
598
|
+
|
|
591
599
|
def get(self, key: str, default: Any = None) -> Any:
|
|
592
600
|
"""Get configuration value."""
|
|
593
601
|
# Support nested keys with dot notation
|
|
@@ -764,6 +772,40 @@ class Config:
|
|
|
764
772
|
except Exception as e:
|
|
765
773
|
logger.error(f"Error validating health/recovery configuration: {e}")
|
|
766
774
|
|
|
775
|
+
def _validate_session_config(self) -> None:
|
|
776
|
+
"""Validate session management configuration."""
|
|
777
|
+
try:
|
|
778
|
+
session_config = self.get("session", {})
|
|
779
|
+
|
|
780
|
+
# Validate save_interval range (60-1800 seconds)
|
|
781
|
+
save_interval = session_config.get("save_interval", 300)
|
|
782
|
+
if not isinstance(save_interval, int):
|
|
783
|
+
logger.warning(
|
|
784
|
+
f"Session save_interval must be integer, got {type(save_interval).__name__}, using default 300"
|
|
785
|
+
)
|
|
786
|
+
self.set("session.save_interval", 300)
|
|
787
|
+
elif save_interval < 60:
|
|
788
|
+
logger.warning(
|
|
789
|
+
f"Session save_interval must be at least 60 seconds, got {save_interval}, using 60"
|
|
790
|
+
)
|
|
791
|
+
self.set("session.save_interval", 60)
|
|
792
|
+
elif save_interval > 1800:
|
|
793
|
+
logger.warning(
|
|
794
|
+
f"Session save_interval must be at most 1800 seconds (30 min), got {save_interval}, using 1800"
|
|
795
|
+
)
|
|
796
|
+
self.set("session.save_interval", 1800)
|
|
797
|
+
|
|
798
|
+
# Validate auto_save is boolean
|
|
799
|
+
auto_save = session_config.get("auto_save", True)
|
|
800
|
+
if not isinstance(auto_save, bool):
|
|
801
|
+
logger.warning(
|
|
802
|
+
f"Session auto_save must be boolean, got {type(auto_save).__name__}, using True"
|
|
803
|
+
)
|
|
804
|
+
self.set("session.auto_save", True)
|
|
805
|
+
|
|
806
|
+
except Exception as e:
|
|
807
|
+
logger.error(f"Error validating session configuration: {e}")
|
|
808
|
+
|
|
767
809
|
def get_health_monitoring_config(self) -> Dict[str, Any]:
|
|
768
810
|
"""Get health monitoring configuration with defaults."""
|
|
769
811
|
base_config = {
|