claude-mpm 4.1.26__py3-none-any.whl → 5.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +432 -158
- claude_mpm/agents/BASE_PROMPT_ENGINEER.md +787 -0
- claude_mpm/agents/BASE_QA.md +167 -0
- claude_mpm/agents/BASE_RESEARCH.md +53 -0
- claude_mpm/agents/OUTPUT_STYLE.md +254 -29
- claude_mpm/agents/PM_INSTRUCTIONS.md +969 -0
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +355 -191
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +41 -14
- claude_mpm/agents/agent_loader_integration.py +3 -2
- claude_mpm/agents/async_agent_loader.py +3 -3
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +21 -44
- claude_mpm/agents/frontmatter_validator.py +292 -252
- claude_mpm/agents/system_agent_config.py +3 -2
- claude_mpm/agents/templates/README.md +465 -0
- claude_mpm/agents/templates/circuit-breakers.md +1005 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/git-file-tracking.md +584 -0
- claude_mpm/agents/templates/pm-examples.md +474 -0
- claude_mpm/agents/templates/pm-red-flags.md +310 -0
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/response-format.md +583 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/agents/templates/validation-templates.md +312 -0
- claude_mpm/cli/__init__.py +72 -376
- claude_mpm/cli/commands/__init__.py +4 -0
- claude_mpm/cli/commands/agent_manager.py +675 -20
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +344 -0
- claude_mpm/cli/commands/agents.py +1673 -178
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_detect.py +380 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/agents_recommend.py +309 -0
- claude_mpm/cli/commands/aggregate.py +11 -7
- claude_mpm/cli/commands/analyze.py +18 -13
- claude_mpm/cli/commands/analyze_code.py +8 -4
- claude_mpm/cli/commands/auto_configure.py +566 -0
- claude_mpm/cli/commands/cleanup.py +12 -12
- claude_mpm/cli/commands/config.py +54 -17
- claude_mpm/cli/commands/configure.py +1184 -1055
- claude_mpm/cli/commands/configure_agent_display.py +261 -0
- claude_mpm/cli/commands/configure_behavior_manager.py +204 -0
- claude_mpm/cli/commands/configure_hook_manager.py +225 -0
- claude_mpm/cli/commands/configure_models.py +18 -0
- claude_mpm/cli/commands/configure_navigation.py +184 -0
- claude_mpm/cli/commands/configure_paths.py +104 -0
- claude_mpm/cli/commands/configure_persistence.py +254 -0
- claude_mpm/cli/commands/configure_startup_manager.py +646 -0
- claude_mpm/cli/commands/configure_template_editor.py +497 -0
- claude_mpm/cli/commands/configure_validators.py +73 -0
- claude_mpm/cli/commands/dashboard.py +50 -52
- claude_mpm/cli/commands/debug.py +19 -19
- claude_mpm/cli/commands/doctor.py +51 -7
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/info.py +3 -4
- claude_mpm/cli/commands/local_deploy.py +534 -0
- claude_mpm/cli/commands/mcp.py +17 -10
- claude_mpm/cli/commands/mcp_command_router.py +11 -0
- claude_mpm/cli/commands/mcp_config.py +154 -0
- claude_mpm/cli/commands/mcp_external_commands.py +249 -0
- claude_mpm/cli/commands/mcp_install_commands.py +101 -32
- claude_mpm/cli/commands/mcp_pipx_config.py +2 -2
- claude_mpm/cli/commands/mcp_setup_external.py +868 -0
- claude_mpm/cli/commands/memory.py +55 -21
- claude_mpm/cli/commands/monitor.py +160 -70
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +114 -4
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +252 -167
- claude_mpm/cli/commands/search.py +458 -0
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +1225 -0
- claude_mpm/cli/commands/uninstall.py +176 -0
- claude_mpm/cli/commands/upgrade.py +152 -0
- claude_mpm/cli/commands/verify.py +119 -0
- claude_mpm/cli/executor.py +279 -0
- claude_mpm/cli/helpers.py +105 -0
- claude_mpm/cli/interactive/__init__.py +21 -0
- claude_mpm/cli/interactive/agent_wizard.py +1872 -0
- claude_mpm/cli/interactive/skills_wizard.py +491 -0
- claude_mpm/cli/parser.py +79 -2
- claude_mpm/cli/parsers/__init__.py +7 -1
- claude_mpm/cli/parsers/agent_manager_parser.py +161 -1
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +369 -1
- claude_mpm/cli/parsers/auto_configure_parser.py +245 -0
- claude_mpm/cli/parsers/base_parser.py +196 -3
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/configure_parser.py +11 -15
- claude_mpm/cli/parsers/local_deploy_parser.py +227 -0
- claude_mpm/cli/parsers/mcp_parser.py +15 -0
- claude_mpm/cli/parsers/monitor_parser.py +12 -2
- claude_mpm/cli/parsers/mpm_init_parser.py +179 -9
- claude_mpm/cli/parsers/run_parser.py +5 -0
- claude_mpm/cli/parsers/search_parser.py +245 -0
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +282 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/shared/argument_patterns.py +20 -13
- claude_mpm/cli/shared/base_command.py +2 -2
- claude_mpm/cli/shared/output_formatters.py +28 -19
- claude_mpm/cli/startup.py +994 -0
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/startup_logging.py +179 -13
- claude_mpm/cli/utils.py +54 -3
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/mpm-agents-auto-configure.md +278 -0
- claude_mpm/commands/mpm-agents-detect.md +177 -0
- claude_mpm/commands/mpm-agents-list.md +131 -0
- claude_mpm/commands/mpm-agents-recommend.md +223 -0
- claude_mpm/commands/mpm-config-view.md +150 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +297 -5
- claude_mpm/commands/mpm-init.md +401 -17
- claude_mpm/commands/mpm-monitor.md +418 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/mpm-session-resume.md +381 -0
- claude_mpm/commands/mpm-status.md +79 -8
- claude_mpm/commands/mpm-ticket-organize.md +304 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +122 -0
- claude_mpm/commands/mpm.md +12 -0
- claude_mpm/config/agent_config.py +4 -4
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/experimental_features.py +7 -7
- claude_mpm/config/model_config.py +428 -0
- claude_mpm/config/paths.py +3 -2
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/config/socketio_config.py +3 -3
- claude_mpm/constants.py +28 -1
- claude_mpm/core/__init__.py +53 -17
- claude_mpm/core/agent_name_normalizer.py +3 -2
- claude_mpm/core/agent_registry.py +2 -2
- claude_mpm/core/agent_session_manager.py +10 -10
- claude_mpm/core/api_validator.py +330 -0
- claude_mpm/core/base_service.py +33 -23
- claude_mpm/core/cache.py +9 -9
- claude_mpm/core/claude_runner.py +24 -42
- claude_mpm/core/config.py +101 -8
- claude_mpm/core/config_aliases.py +7 -6
- claude_mpm/core/constants.py +66 -1
- claude_mpm/core/container.py +11 -5
- claude_mpm/core/enums.py +452 -0
- claude_mpm/core/error_handler.py +623 -0
- claude_mpm/core/factories.py +1 -1
- claude_mpm/core/file_utils.py +764 -0
- claude_mpm/core/framework/__init__.py +25 -0
- claude_mpm/core/framework/formatters/__init__.py +11 -0
- claude_mpm/core/framework/formatters/capability_generator.py +367 -0
- claude_mpm/core/framework/formatters/content_formatter.py +288 -0
- claude_mpm/core/framework/formatters/context_generator.py +185 -0
- claude_mpm/core/framework/loaders/__init__.py +13 -0
- claude_mpm/core/framework/loaders/agent_loader.py +210 -0
- claude_mpm/core/framework/loaders/file_loader.py +176 -0
- claude_mpm/core/framework/loaders/instruction_loader.py +181 -0
- claude_mpm/core/framework/loaders/packaged_loader.py +232 -0
- claude_mpm/core/framework/processors/__init__.py +11 -0
- claude_mpm/core/framework/processors/memory_processor.py +230 -0
- claude_mpm/core/framework/processors/metadata_processor.py +146 -0
- claude_mpm/core/framework/processors/template_processor.py +244 -0
- claude_mpm/core/framework_loader.py +321 -1631
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +49 -8
- claude_mpm/core/injectable_service.py +11 -8
- claude_mpm/core/instruction_reinforcement_hook.py +4 -3
- claude_mpm/core/interactive_session.py +146 -18
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/lazy.py +3 -3
- claude_mpm/core/log_manager.py +92 -23
- claude_mpm/core/logger.py +22 -15
- claude_mpm/core/logging_config.py +6 -2
- claude_mpm/core/logging_utils.py +520 -0
- claude_mpm/core/oneshot_session.py +122 -15
- claude_mpm/core/optimized_agent_loader.py +9 -9
- claude_mpm/core/optimized_startup.py +1 -1
- claude_mpm/core/output_style_manager.py +12 -192
- claude_mpm/core/pm_hook_interceptor.py +18 -12
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/service_registry.py +7 -3
- claude_mpm/core/session_manager.py +14 -12
- claude_mpm/core/shared/config_loader.py +1 -1
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/socketio_pool.py +15 -15
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/tool_access_control.py +3 -2
- claude_mpm/core/types.py +4 -11
- claude_mpm/core/typing_utils.py +7 -6
- claude_mpm/core/unified_agent_registry.py +115 -11
- claude_mpm/core/unified_config.py +6 -6
- claude_mpm/core/unified_paths.py +23 -20
- claude_mpm/dashboard/analysis_runner.py +4 -4
- claude_mpm/dashboard/api/simple_directory.py +261 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +600 -18
- claude_mpm/dashboard/static/js/components/activity-tree.js +181 -195
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +105 -102
- claude_mpm/dashboard/static/js/components/agent-inference.js +34 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +67 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +857 -0
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +891 -0
- claude_mpm/dashboard/static/js/components/event-processor.js +3 -0
- claude_mpm/dashboard/static/js/components/event-viewer.js +50 -13
- claude_mpm/dashboard/static/js/components/export-manager.js +3 -0
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +443 -0
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +690 -0
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +36 -16
- claude_mpm/dashboard/static/js/components/file-viewer.js +580 -0
- claude_mpm/dashboard/static/js/components/module-viewer.js +49 -23
- claude_mpm/dashboard/static/js/components/session-manager.js +19 -19
- claude_mpm/dashboard/static/js/components/socket-manager.js +5 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +356 -41
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +520 -88
- claude_mpm/dashboard/static/js/components/working-directory.js +46 -11
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +309 -178
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +183 -139
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +185 -0
- claude_mpm/dashboard/static/socket.io.min.js +7 -0
- claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +7 -0
- claude_mpm/dashboard/templates/code_simple.html +153 -0
- claude_mpm/dashboard/templates/index.html +125 -122
- claude_mpm/experimental/cli_enhancements.py +5 -7
- claude_mpm/generators/agent_profile_generator.py +5 -3
- claude_mpm/hooks/__init__.py +37 -1
- claude_mpm/hooks/base_hook.py +5 -4
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/connection_pool.py +4 -4
- claude_mpm/hooks/claude_hooks/event_handlers.py +24 -19
- claude_mpm/hooks/claude_hooks/hook_handler.py +29 -22
- claude_mpm/hooks/claude_hooks/installer.py +67 -22
- claude_mpm/hooks/claude_hooks/memory_integration.py +3 -3
- claude_mpm/hooks/claude_hooks/response_tracking.py +57 -17
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +62 -64
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +140 -76
- claude_mpm/hooks/claude_hooks/services/state_manager.py +11 -9
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +3 -3
- claude_mpm/hooks/failure_learning/__init__.py +54 -0
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +230 -0
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +212 -0
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +281 -0
- claude_mpm/hooks/instruction_reinforcement.py +301 -0
- claude_mpm/hooks/kuzu_enrichment_hook.py +263 -0
- claude_mpm/hooks/kuzu_memory_hook.py +386 -0
- claude_mpm/hooks/kuzu_response_hook.py +179 -0
- claude_mpm/hooks/memory_integration_hook.py +1 -1
- claude_mpm/hooks/session_resume_hook.py +121 -0
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/hooks/tool_call_interceptor.py +8 -5
- claude_mpm/hooks/validation_hooks.py +3 -3
- claude_mpm/init.py +23 -4
- claude_mpm/models/agent_session.py +8 -6
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/models/resume_log.py +340 -0
- claude_mpm/scripts/claude-hook-handler.sh +35 -9
- claude_mpm/scripts/launch_monitor.py +85 -0
- claude_mpm/scripts/mcp_server.py +3 -5
- claude_mpm/scripts/mpm_doctor.py +3 -2
- claude_mpm/scripts/socketio_daemon.py +159 -512
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/__init__.py +144 -160
- claude_mpm/services/agents/__init__.py +18 -5
- claude_mpm/services/agents/agent_builder.py +56 -18
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_config_manager.py +796 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_deployment.py +164 -17
- claude_mpm/services/agents/deployment/agent_discovery_service.py +191 -41
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +5 -5
- claude_mpm/services/agents/deployment/agent_format_converter.py +56 -12
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +5 -7
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_operation_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_record_service.py +4 -4
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_state_service.py +2 -2
- claude_mpm/services/agents/deployment/agent_template_builder.py +939 -50
- claude_mpm/services/agents/deployment/agent_validator.py +31 -7
- claude_mpm/services/agents/deployment/agent_version_manager.py +8 -5
- claude_mpm/services/agents/deployment/agent_versioning.py +1 -1
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +3 -2
- claude_mpm/services/agents/deployment/deployment_config_loader.py +131 -7
- claude_mpm/services/agents/deployment/deployment_type_detector.py +10 -14
- claude_mpm/services/agents/deployment/deployment_wrapper.py +58 -0
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/interface_adapter.py +3 -2
- claude_mpm/services/agents/deployment/local_template_deployment.py +360 -0
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +249 -53
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +8 -7
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +7 -16
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +4 -3
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +7 -5
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +6 -5
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +10 -10
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -43
- claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/deployment/validation/template_validator.py +64 -44
- claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/agent_profile_loader.py +10 -9
- claude_mpm/services/agents/loading/base_agent_manager.py +16 -6
- claude_mpm/services/agents/loading/framework_agent_loader.py +11 -14
- claude_mpm/services/agents/local_template_manager.py +784 -0
- claude_mpm/services/agents/management/agent_capabilities_generator.py +3 -2
- claude_mpm/services/agents/management/agent_management_service.py +5 -5
- claude_mpm/services/agents/memory/agent_memory_manager.py +32 -29
- claude_mpm/services/agents/memory/content_manager.py +17 -9
- claude_mpm/services/agents/memory/memory_categorization_service.py +4 -2
- claude_mpm/services/agents/memory/memory_file_service.py +32 -6
- claude_mpm/services/agents/memory/memory_format_service.py +6 -4
- claude_mpm/services/agents/memory/memory_limits_service.py +4 -2
- claude_mpm/services/agents/memory/template_generator.py +3 -3
- claude_mpm/services/agents/observers.py +547 -0
- claude_mpm/services/agents/recommender.py +615 -0
- claude_mpm/services/agents/registry/deployed_agent_discovery.py +3 -3
- claude_mpm/services/agents/registry/modification_tracker.py +30 -19
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/async_session_logger.py +141 -98
- claude_mpm/services/claude_session_logger.py +82 -74
- claude_mpm/services/cli/agent_cleanup_service.py +5 -0
- claude_mpm/services/cli/agent_listing_service.py +5 -5
- claude_mpm/services/cli/agent_validation_service.py +3 -1
- claude_mpm/services/cli/memory_crud_service.py +12 -7
- claude_mpm/services/cli/memory_output_formatter.py +2 -2
- claude_mpm/services/cli/resume_service.py +617 -0
- claude_mpm/services/cli/session_manager.py +104 -13
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +372 -0
- claude_mpm/services/cli/startup_checker.py +13 -10
- claude_mpm/services/cli/unified_dashboard_manager.py +439 -0
- claude_mpm/services/command_deployment_service.py +209 -13
- claude_mpm/services/command_handler_service.py +11 -5
- claude_mpm/services/core/__init__.py +33 -1
- claude_mpm/services/core/base.py +31 -11
- claude_mpm/services/core/interfaces/__init__.py +88 -3
- claude_mpm/services/core/interfaces/agent.py +184 -0
- claude_mpm/services/core/interfaces/health.py +169 -0
- claude_mpm/services/core/interfaces/model.py +281 -0
- claude_mpm/services/core/interfaces/process.py +372 -0
- claude_mpm/services/core/interfaces/project.py +121 -0
- claude_mpm/services/core/interfaces/restart.py +307 -0
- claude_mpm/services/core/interfaces/stability.py +260 -0
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/memory_manager.py +92 -47
- claude_mpm/services/core/models/__init__.py +70 -0
- claude_mpm/services/core/models/agent_config.py +384 -0
- claude_mpm/services/core/models/health.py +162 -0
- claude_mpm/services/core/models/process.py +239 -0
- claude_mpm/services/core/models/restart.py +302 -0
- claude_mpm/services/core/models/stability.py +264 -0
- claude_mpm/services/core/models/toolchain.py +306 -0
- claude_mpm/services/core/path_resolver.py +36 -14
- claude_mpm/services/diagnostics/__init__.py +2 -2
- claude_mpm/services/diagnostics/checks/__init__.py +8 -2
- claude_mpm/services/diagnostics/checks/agent_check.py +30 -34
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/claude_code_check.py +270 -0
- claude_mpm/services/diagnostics/checks/common_issues_check.py +28 -27
- claude_mpm/services/diagnostics/checks/configuration_check.py +26 -25
- claude_mpm/services/diagnostics/checks/filesystem_check.py +18 -17
- claude_mpm/services/diagnostics/checks/installation_check.py +165 -60
- claude_mpm/services/diagnostics/checks/instructions_check.py +21 -21
- claude_mpm/services/diagnostics/checks/mcp_check.py +57 -44
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +1058 -0
- claude_mpm/services/diagnostics/checks/monitor_check.py +24 -24
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/checks/startup_log_check.py +14 -11
- claude_mpm/services/diagnostics/diagnostic_runner.py +31 -13
- claude_mpm/services/diagnostics/doctor_reporter.py +305 -47
- claude_mpm/services/diagnostics/models.py +37 -21
- claude_mpm/services/event_aggregator.py +5 -3
- claude_mpm/services/event_bus/direct_relay.py +11 -7
- claude_mpm/services/event_bus/event_bus.py +51 -9
- claude_mpm/services/event_bus/relay.py +33 -14
- claude_mpm/services/events/consumers/dead_letter.py +7 -5
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/events/core.py +5 -6
- claude_mpm/services/events/producers/hook.py +6 -6
- claude_mpm/services/events/producers/system.py +8 -8
- claude_mpm/services/exceptions.py +5 -5
- claude_mpm/services/framework_claude_md_generator/__init__.py +1 -1
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +5 -5
- claude_mpm/services/framework_claude_md_generator/content_validator.py +2 -2
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +3 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +2 -2
- claude_mpm/services/framework_claude_md_generator/version_manager.py +1 -1
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/hook_installer_service.py +506 -0
- claude_mpm/services/hook_service.py +5 -6
- claude_mpm/services/infrastructure/context_preservation.py +13 -11
- claude_mpm/services/infrastructure/daemon_manager.py +9 -9
- claude_mpm/services/infrastructure/logging.py +2 -2
- claude_mpm/services/infrastructure/monitoring/__init__.py +2 -6
- claude_mpm/services/infrastructure/monitoring/aggregator.py +13 -18
- claude_mpm/services/infrastructure/monitoring/base.py +5 -13
- claude_mpm/services/infrastructure/monitoring/network.py +7 -6
- claude_mpm/services/infrastructure/monitoring/process.py +13 -12
- claude_mpm/services/infrastructure/monitoring/resources.py +8 -7
- claude_mpm/services/infrastructure/monitoring/service.py +16 -15
- claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +155 -0
- claude_mpm/services/local_ops/crash_detector.py +257 -0
- claude_mpm/services/local_ops/health_checks/__init__.py +26 -0
- claude_mpm/services/local_ops/health_checks/http_check.py +224 -0
- claude_mpm/services/local_ops/health_checks/process_check.py +236 -0
- claude_mpm/services/local_ops/health_checks/resource_check.py +255 -0
- claude_mpm/services/local_ops/health_manager.py +427 -0
- claude_mpm/services/local_ops/log_monitor.py +396 -0
- claude_mpm/services/local_ops/memory_leak_detector.py +294 -0
- claude_mpm/services/local_ops/process_manager.py +595 -0
- claude_mpm/services/local_ops/resource_monitor.py +331 -0
- claude_mpm/services/local_ops/restart_manager.py +401 -0
- claude_mpm/services/local_ops/restart_policy.py +387 -0
- claude_mpm/services/local_ops/state_manager.py +372 -0
- claude_mpm/services/local_ops/unified_manager.py +600 -0
- claude_mpm/services/mcp_config_manager.py +1542 -0
- claude_mpm/services/mcp_gateway/__init__.py +97 -93
- claude_mpm/services/mcp_gateway/auto_configure.py +43 -38
- claude_mpm/services/mcp_gateway/config/config_loader.py +3 -3
- claude_mpm/services/mcp_gateway/config/configuration.py +24 -5
- claude_mpm/services/mcp_gateway/core/__init__.py +1 -2
- claude_mpm/services/mcp_gateway/core/base.py +20 -33
- claude_mpm/services/mcp_gateway/core/process_pool.py +591 -31
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +2 -2
- claude_mpm/services/mcp_gateway/core/startup_verification.py +3 -3
- claude_mpm/services/mcp_gateway/main.py +90 -15
- claude_mpm/services/mcp_gateway/registry/service_registry.py +4 -2
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +12 -9
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +5 -10
- claude_mpm/services/mcp_gateway/server/stdio_server.py +9 -17
- claude_mpm/services/mcp_gateway/tools/__init__.py +14 -2
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +15 -15
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +10 -9
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +654 -0
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +36 -34
- claude_mpm/services/mcp_gateway/tools/hello_world.py +8 -8
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +555 -0
- claude_mpm/services/mcp_gateway/utils/__init__.py +14 -0
- claude_mpm/services/mcp_gateway/utils/package_version_checker.py +160 -0
- claude_mpm/services/mcp_gateway/utils/update_preferences.py +170 -0
- claude_mpm/services/mcp_service_verifier.py +732 -0
- claude_mpm/services/memory/builder.py +9 -8
- claude_mpm/services/memory/cache/shared_prompt_cache.py +2 -1
- claude_mpm/services/memory/cache/simple_cache.py +2 -2
- claude_mpm/services/memory/failure_tracker.py +578 -0
- claude_mpm/services/memory/indexed_memory.py +8 -8
- claude_mpm/services/memory/optimizer.py +8 -9
- claude_mpm/services/memory/router.py +3 -3
- claude_mpm/services/memory_hook_service.py +165 -4
- claude_mpm/services/model/__init__.py +147 -0
- claude_mpm/services/model/base_provider.py +365 -0
- claude_mpm/services/model/claude_provider.py +412 -0
- claude_mpm/services/model/model_router.py +452 -0
- claude_mpm/services/model/ollama_provider.py +415 -0
- claude_mpm/services/monitor/__init__.py +20 -0
- claude_mpm/services/monitor/daemon.py +691 -0
- claude_mpm/services/monitor/daemon_manager.py +1040 -0
- claude_mpm/services/monitor/event_emitter.py +350 -0
- claude_mpm/services/monitor/handlers/__init__.py +21 -0
- claude_mpm/services/monitor/handlers/code_analysis.py +332 -0
- claude_mpm/services/monitor/handlers/dashboard.py +299 -0
- claude_mpm/services/monitor/handlers/file.py +264 -0
- claude_mpm/services/monitor/handlers/hooks.py +512 -0
- claude_mpm/services/monitor/management/__init__.py +18 -0
- claude_mpm/services/monitor/management/health.py +124 -0
- claude_mpm/services/monitor/management/lifecycle.py +724 -0
- claude_mpm/services/monitor/server.py +817 -0
- claude_mpm/services/monitor_build_service.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/orphan_detection.py +786 -0
- claude_mpm/services/port_manager.py +3 -3
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/__init__.py +23 -0
- claude_mpm/services/project/analyzer.py +3 -3
- claude_mpm/services/project/architecture_analyzer.py +5 -5
- claude_mpm/services/project/archive_manager.py +1045 -0
- claude_mpm/services/project/dependency_analyzer.py +4 -4
- claude_mpm/services/project/detection_strategies.py +719 -0
- claude_mpm/services/project/documentation_manager.py +554 -0
- claude_mpm/services/project/enhanced_analyzer.py +572 -0
- claude_mpm/services/project/metrics_collector.py +4 -4
- claude_mpm/services/project/project_organizer.py +1005 -0
- claude_mpm/services/project/registry.py +13 -7
- claude_mpm/services/project/toolchain_analyzer.py +583 -0
- claude_mpm/services/project_port_allocator.py +596 -0
- claude_mpm/services/response_tracker.py +21 -10
- claude_mpm/services/runner_configuration_service.py +17 -3
- claude_mpm/services/self_upgrade_service.py +500 -0
- claude_mpm/services/session_management_service.py +23 -9
- claude_mpm/services/session_manager.py +380 -0
- claude_mpm/services/shared/__init__.py +2 -1
- claude_mpm/services/shared/async_service_base.py +16 -27
- claude_mpm/services/shared/config_service_base.py +17 -14
- claude_mpm/services/shared/lifecycle_service_base.py +1 -14
- claude_mpm/services/shared/service_factory.py +8 -5
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/client_proxy.py +60 -5
- claude_mpm/services/socketio/dashboard_server.py +361 -0
- claude_mpm/services/socketio/event_normalizer.py +10 -6
- claude_mpm/services/socketio/handlers/__init__.py +5 -2
- claude_mpm/services/socketio/handlers/base.py +2 -2
- claude_mpm/services/socketio/handlers/code_analysis.py +90 -27
- claude_mpm/services/socketio/handlers/connection.py +22 -41
- claude_mpm/services/socketio/handlers/connection_handler.py +13 -10
- claude_mpm/services/socketio/handlers/file.py +46 -10
- claude_mpm/services/socketio/handlers/git.py +9 -9
- claude_mpm/services/socketio/handlers/hook.py +29 -17
- claude_mpm/services/socketio/handlers/registry.py +4 -2
- claude_mpm/services/socketio/monitor_client.py +364 -0
- claude_mpm/services/socketio/server/broadcaster.py +9 -7
- claude_mpm/services/socketio/server/connection_manager.py +2 -2
- claude_mpm/services/socketio/server/core.py +142 -8
- claude_mpm/services/socketio/server/eventbus_integration.py +20 -14
- claude_mpm/services/socketio/server/main.py +24 -24
- claude_mpm/services/socketio_client_manager.py +4 -4
- claude_mpm/services/subprocess_launcher_service.py +19 -15
- claude_mpm/services/system_instructions_service.py +3 -5
- claude_mpm/services/ticket_services/formatter_service.py +1 -1
- claude_mpm/services/ticket_services/validation_service.py +5 -5
- claude_mpm/services/unified/__init__.py +65 -0
- claude_mpm/services/unified/analyzer_strategies/__init__.py +44 -0
- claude_mpm/services/unified/analyzer_strategies/code_analyzer.py +518 -0
- claude_mpm/services/unified/analyzer_strategies/dependency_analyzer.py +680 -0
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +900 -0
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +745 -0
- claude_mpm/services/unified/analyzer_strategies/structure_analyzer.py +733 -0
- claude_mpm/services/unified/config_strategies/__init__.py +175 -0
- claude_mpm/services/unified/config_strategies/config_schema.py +731 -0
- claude_mpm/services/unified/config_strategies/context_strategy.py +747 -0
- claude_mpm/services/unified/config_strategies/error_handling_strategy.py +1005 -0
- claude_mpm/services/unified/config_strategies/file_loader_strategy.py +881 -0
- claude_mpm/services/unified/config_strategies/unified_config_service.py +823 -0
- claude_mpm/services/unified/config_strategies/validation_strategy.py +1148 -0
- claude_mpm/services/unified/deployment_strategies/__init__.py +97 -0
- claude_mpm/services/unified/deployment_strategies/base.py +553 -0
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +573 -0
- claude_mpm/services/unified/deployment_strategies/local.py +607 -0
- claude_mpm/services/unified/deployment_strategies/utils.py +667 -0
- claude_mpm/services/unified/deployment_strategies/vercel.py +471 -0
- claude_mpm/services/unified/interfaces.py +475 -0
- claude_mpm/services/unified/migration.py +509 -0
- claude_mpm/services/unified/strategies.py +534 -0
- claude_mpm/services/unified/unified_analyzer.py +542 -0
- claude_mpm/services/unified/unified_config.py +691 -0
- claude_mpm/services/unified/unified_deployment.py +466 -0
- claude_mpm/services/utility_service.py +6 -3
- claude_mpm/services/version_control/branch_strategy.py +2 -2
- claude_mpm/services/version_control/conflict_resolution.py +14 -8
- claude_mpm/services/version_control/git_operations.py +26 -24
- claude_mpm/services/version_control/semantic_versioning.py +14 -14
- claude_mpm/services/version_control/version_parser.py +14 -11
- claude_mpm/services/version_service.py +104 -1
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +42 -0
- claude_mpm/skills/agent_skills_injector.py +324 -0
- claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
- claude_mpm/skills/bundled/__init__.py +6 -0
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +573 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- claude_mpm/skills/registry.py +286 -0
- claude_mpm/skills/skill_manager.py +310 -0
- claude_mpm/skills/skills_registry.py +347 -0
- claude_mpm/skills/skills_service.py +739 -0
- claude_mpm/storage/state_storage.py +31 -31
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +9 -9
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/tools/code_tree_builder.py +6 -6
- claude_mpm/tools/code_tree_events.py +14 -10
- claude_mpm/tools/socketio_debug.py +11 -11
- claude_mpm/utils/agent_dependency_loader.py +184 -36
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/common.py +544 -0
- claude_mpm/utils/config_manager.py +12 -6
- claude_mpm/utils/database_connector.py +298 -0
- claude_mpm/utils/dependency_cache.py +5 -3
- claude_mpm/utils/dependency_strategies.py +15 -10
- claude_mpm/utils/display_helper.py +260 -0
- claude_mpm/utils/environment_context.py +4 -3
- claude_mpm/utils/error_handler.py +5 -3
- claude_mpm/utils/file_utils.py +13 -14
- claude_mpm/utils/git_analyzer.py +407 -0
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/log_cleanup.py +627 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/path_operations.py +7 -4
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +131 -24
- claude_mpm/utils/session_logging.py +2 -2
- claude_mpm/utils/structured_questions.py +619 -0
- claude_mpm/utils/subprocess_utils.py +9 -8
- claude_mpm/validation/agent_validator.py +6 -6
- claude_mpm/validation/frontmatter_validator.py +6 -6
- claude_mpm-5.0.9.dist-info/METADATA +1028 -0
- claude_mpm-5.0.9.dist-info/RECORD +864 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/entry_points.txt +1 -0
- claude_mpm/agents/INSTRUCTIONS.md +0 -261
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -270
- claude_mpm/agents/templates/agent-manager.md +0 -619
- claude_mpm/agents/templates/agentic_coder_optimizer.json +0 -222
- claude_mpm/agents/templates/api_qa.json +0 -171
- claude_mpm/agents/templates/code_analyzer.json +0 -95
- claude_mpm/agents/templates/data_engineer.json +0 -152
- claude_mpm/agents/templates/documentation.json +0 -175
- claude_mpm/agents/templates/engineer.json +0 -176
- claude_mpm/agents/templates/imagemagick.json +0 -261
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/memory_manager.json +0 -155
- claude_mpm/agents/templates/ops.json +0 -175
- claude_mpm/agents/templates/project_organizer.json +0 -130
- claude_mpm/agents/templates/qa.json +0 -223
- claude_mpm/agents/templates/refactoring_engineer.json +0 -266
- claude_mpm/agents/templates/research.json +0 -163
- claude_mpm/agents/templates/security.json +0 -153
- claude_mpm/agents/templates/ticketing.json +0 -169
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -281
- claude_mpm/agents/templates/version_control.json +0 -147
- claude_mpm/agents/templates/web_qa.json +0 -254
- claude_mpm/agents/templates/web_ui.json +0 -176
- claude_mpm/cli/commands/configure_tui.py +0 -1927
- claude_mpm/cli/commands/mpm_init.py +0 -594
- claude_mpm/cli/commands/socketio_monitor.py +0 -233
- claude_mpm/commands/mpm-agents.md +0 -12
- claude_mpm/commands/mpm-config.md +0 -18
- claude_mpm/commands/mpm-tickets.md +0 -102
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/css/code-tree.css +0 -1408
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/js/components/code-tree.js +0 -3220
- claude_mpm/dashboard/static/js/components/code-viewer.js +0 -480
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -425
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -1040
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -347
- claude_mpm/scripts/socketio_daemon_hardened.py +0 -937
- claude_mpm/scripts/socketio_daemon_wrapper.py +0 -78
- claude_mpm/scripts/socketio_server_manager.py +0 -349
- claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +0 -575
- claude_mpm/services/cli/dashboard_launcher.py +0 -423
- claude_mpm/services/cli/socketio_manager.py +0 -537
- claude_mpm/services/diagnostics/checks/claude_desktop_check.py +0 -286
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -645
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -602
- claude_mpm/services/project/analyzer_refactored.py +0 -450
- claude_mpm/tools/code_tree_analyzer.py +0 -1693
- claude_mpm-4.1.26.dist-info/METADATA +0 -332
- claude_mpm-4.1.26.dist-info/RECORD +0 -606
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.26.dist-info → claude_mpm-5.0.9.dist-info}/top_level.txt +0 -0
|
@@ -14,11 +14,12 @@ DESIGN DECISIONS:
|
|
|
14
14
|
- Capture all startup logs to timestamped files for analysis
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
+
import asyncio
|
|
17
18
|
import logging
|
|
18
19
|
import shutil
|
|
19
20
|
import subprocess
|
|
20
21
|
import sys
|
|
21
|
-
from datetime import datetime
|
|
22
|
+
from datetime import datetime, timezone
|
|
22
23
|
from pathlib import Path
|
|
23
24
|
from typing import Any, Dict, Optional
|
|
24
25
|
|
|
@@ -69,7 +70,7 @@ def log_memory_stats(logger=None, prefix="Memory Usage"):
|
|
|
69
70
|
f"{prefix}: RSS={rss_mb:.1f}MB, System={memory_percent:.1f}%"
|
|
70
71
|
)
|
|
71
72
|
return {"rss_mb": rss_mb, "vms_mb": None, "percent": memory_percent}
|
|
72
|
-
except:
|
|
73
|
+
except Exception:
|
|
73
74
|
logger.info(f"{prefix}: RSS={rss_mb:.1f}MB")
|
|
74
75
|
return {"rss_mb": rss_mb, "vms_mb": None, "percent": None}
|
|
75
76
|
else:
|
|
@@ -82,7 +83,7 @@ def log_memory_stats(logger=None, prefix="Memory Usage"):
|
|
|
82
83
|
f"System={memory_percent:.1f}%"
|
|
83
84
|
)
|
|
84
85
|
return {"rss_mb": rss_mb, "vms_mb": vms_mb, "percent": memory_percent}
|
|
85
|
-
except:
|
|
86
|
+
except Exception:
|
|
86
87
|
logger.info(f"{prefix}: RSS={rss_mb:.1f}MB, VMS={vms_mb:.1f}MB")
|
|
87
88
|
return {"rss_mb": rss_mb, "vms_mb": vms_mb, "percent": None}
|
|
88
89
|
|
|
@@ -114,12 +115,10 @@ class StartupStatusLogger:
|
|
|
114
115
|
if mcp_executable:
|
|
115
116
|
self.logger.info(f"MCP Server: Installed at {mcp_executable}")
|
|
116
117
|
|
|
117
|
-
# Try to get version
|
|
118
|
+
# Try to get version (only log if version is found)
|
|
118
119
|
version = self._get_mcp_version(mcp_executable)
|
|
119
120
|
if version:
|
|
120
121
|
self.logger.info(f"MCP Server: Version {version}")
|
|
121
|
-
else:
|
|
122
|
-
self.logger.info("MCP Server: Version unknown")
|
|
123
122
|
else:
|
|
124
123
|
self.logger.info("MCP Server: Not found in PATH")
|
|
125
124
|
|
|
@@ -304,7 +303,7 @@ class StartupStatusLogger:
|
|
|
304
303
|
|
|
305
304
|
import json
|
|
306
305
|
|
|
307
|
-
with open(
|
|
306
|
+
with claude_json_path.open() as f:
|
|
308
307
|
config = json.load(f)
|
|
309
308
|
|
|
310
309
|
result["found"] = True
|
|
@@ -339,14 +338,27 @@ class StartupStatusLogger:
|
|
|
339
338
|
|
|
340
339
|
def _check_socketio_dependencies(self) -> Dict[str, Any]:
|
|
341
340
|
"""Check if Socket.IO dependencies are available."""
|
|
341
|
+
import importlib.util
|
|
342
|
+
|
|
342
343
|
result = {"available": False, "error": None}
|
|
343
344
|
|
|
344
345
|
try:
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
346
|
+
# Check for socketio dependencies without importing them
|
|
347
|
+
aiohttp_spec = importlib.util.find_spec("aiohttp")
|
|
348
|
+
engineio_spec = importlib.util.find_spec("engineio")
|
|
349
|
+
socketio_spec = importlib.util.find_spec("socketio")
|
|
348
350
|
|
|
349
|
-
|
|
351
|
+
if aiohttp_spec and engineio_spec and socketio_spec:
|
|
352
|
+
result["available"] = True
|
|
353
|
+
else:
|
|
354
|
+
missing = []
|
|
355
|
+
if not aiohttp_spec:
|
|
356
|
+
missing.append("aiohttp")
|
|
357
|
+
if not engineio_spec:
|
|
358
|
+
missing.append("engineio")
|
|
359
|
+
if not socketio_spec:
|
|
360
|
+
missing.append("socketio")
|
|
361
|
+
result["error"] = f"Missing dependencies: {', '.join(missing)}"
|
|
350
362
|
except ImportError as e:
|
|
351
363
|
result["error"] = f"Missing dependencies: {e}"
|
|
352
364
|
except Exception as e:
|
|
@@ -493,7 +505,7 @@ def setup_startup_logging(project_root: Optional[Path] = None) -> Path:
|
|
|
493
505
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
494
506
|
|
|
495
507
|
# Generate timestamp for log file
|
|
496
|
-
timestamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
|
|
508
|
+
timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%d-%H-%M-%S")
|
|
497
509
|
log_file = log_dir / f"startup-{timestamp}.log"
|
|
498
510
|
|
|
499
511
|
# Create file handler with detailed formatting
|
|
@@ -516,7 +528,7 @@ def setup_startup_logging(project_root: Optional[Path] = None) -> Path:
|
|
|
516
528
|
# Log startup header
|
|
517
529
|
logger = get_logger("startup")
|
|
518
530
|
logger.info("=" * 60)
|
|
519
|
-
logger.info(f"Claude MPM Startup - {datetime.now().isoformat()}")
|
|
531
|
+
logger.info(f"Claude MPM Startup - {datetime.now(timezone.utc).isoformat()}")
|
|
520
532
|
logger.info(f"Log file: {log_file}")
|
|
521
533
|
logger.info("=" * 60)
|
|
522
534
|
|
|
@@ -619,6 +631,156 @@ def cleanup_old_startup_logs(
|
|
|
619
631
|
return deleted_count
|
|
620
632
|
|
|
621
633
|
|
|
634
|
+
async def trigger_vector_search_indexing(project_root: Optional[Path] = None) -> None:
|
|
635
|
+
"""
|
|
636
|
+
Trigger mcp-vector-search indexing in the background.
|
|
637
|
+
|
|
638
|
+
This function attempts to start the mcp-vector-search indexing process
|
|
639
|
+
asynchronously so it doesn't block startup. If the service is not available,
|
|
640
|
+
it fails silently.
|
|
641
|
+
|
|
642
|
+
Args:
|
|
643
|
+
project_root: Root directory for the project (defaults to cwd)
|
|
644
|
+
"""
|
|
645
|
+
logger = get_logger("cli")
|
|
646
|
+
|
|
647
|
+
if project_root is None:
|
|
648
|
+
project_root = Path.cwd()
|
|
649
|
+
|
|
650
|
+
try:
|
|
651
|
+
# Check if mcp-vector-search is available
|
|
652
|
+
from ..services.mcp_config_manager import MCPConfigManager
|
|
653
|
+
|
|
654
|
+
manager = MCPConfigManager()
|
|
655
|
+
vector_search_path = manager.detect_service_path("mcp-vector-search")
|
|
656
|
+
|
|
657
|
+
if not vector_search_path:
|
|
658
|
+
logger.debug("mcp-vector-search not found, skipping indexing")
|
|
659
|
+
return
|
|
660
|
+
|
|
661
|
+
# Build the command based on the service configuration
|
|
662
|
+
if "python" in vector_search_path:
|
|
663
|
+
# Using Python interpreter directly
|
|
664
|
+
cmd = [
|
|
665
|
+
vector_search_path,
|
|
666
|
+
"-m",
|
|
667
|
+
"mcp_vector_search.cli",
|
|
668
|
+
"index",
|
|
669
|
+
str(project_root),
|
|
670
|
+
]
|
|
671
|
+
else:
|
|
672
|
+
# Using installed binary
|
|
673
|
+
cmd = [vector_search_path, "index", str(project_root)]
|
|
674
|
+
|
|
675
|
+
logger.info(
|
|
676
|
+
"MCP Vector Search: Starting background indexing for improved code search"
|
|
677
|
+
)
|
|
678
|
+
|
|
679
|
+
# Start the indexing process in the background
|
|
680
|
+
# We use subprocess.Popen instead of run to avoid blocking
|
|
681
|
+
process = await asyncio.create_subprocess_exec(
|
|
682
|
+
*cmd,
|
|
683
|
+
stdout=asyncio.subprocess.DEVNULL,
|
|
684
|
+
stderr=asyncio.subprocess.DEVNULL,
|
|
685
|
+
cwd=str(project_root),
|
|
686
|
+
)
|
|
687
|
+
|
|
688
|
+
# Store PID for logging
|
|
689
|
+
pid = process.pid
|
|
690
|
+
logger.debug(f"MCP Vector Search: Indexing process started (PID: {pid})")
|
|
691
|
+
|
|
692
|
+
# Don't wait for completion - let it run independently in the background
|
|
693
|
+
# We don't need to track its completion, so we can safely detach
|
|
694
|
+
|
|
695
|
+
except ImportError:
|
|
696
|
+
logger.debug(
|
|
697
|
+
"MCP config manager not available, skipping vector search indexing"
|
|
698
|
+
)
|
|
699
|
+
except Exception as e:
|
|
700
|
+
# Don't let indexing failures prevent startup
|
|
701
|
+
logger.debug(f"Failed to start vector search indexing: {e}")
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
def start_vector_search_indexing(project_root: Optional[Path] = None) -> None:
|
|
705
|
+
"""
|
|
706
|
+
Synchronous wrapper to trigger vector search indexing.
|
|
707
|
+
|
|
708
|
+
This creates a new event loop if needed to run the async indexing function.
|
|
709
|
+
Falls back to subprocess.Popen if async fails.
|
|
710
|
+
|
|
711
|
+
Args:
|
|
712
|
+
project_root: Root directory for the project (defaults to cwd)
|
|
713
|
+
"""
|
|
714
|
+
logger = get_logger("cli")
|
|
715
|
+
|
|
716
|
+
try:
|
|
717
|
+
# Try to get the current event loop
|
|
718
|
+
loop = asyncio.get_running_loop()
|
|
719
|
+
# If we're in an event loop, create a task (fire-and-forget)
|
|
720
|
+
_task = loop.create_task(trigger_vector_search_indexing(project_root))
|
|
721
|
+
# Fire-and-forget: task will complete in background
|
|
722
|
+
except RuntimeError:
|
|
723
|
+
# No event loop running - use subprocess directly to avoid event loop lifecycle issues
|
|
724
|
+
# The async approach with asyncio.run() creates and closes a loop which causes
|
|
725
|
+
# warnings when subprocesses are still running
|
|
726
|
+
logger.debug("No event loop running, using subprocess approach")
|
|
727
|
+
_start_vector_search_subprocess(project_root)
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
def _start_vector_search_subprocess(project_root: Optional[Path] = None) -> None:
|
|
731
|
+
"""
|
|
732
|
+
Fallback method to start vector search indexing using subprocess.Popen.
|
|
733
|
+
|
|
734
|
+
Args:
|
|
735
|
+
project_root: Root directory for the project (defaults to cwd)
|
|
736
|
+
"""
|
|
737
|
+
logger = get_logger("cli")
|
|
738
|
+
|
|
739
|
+
if project_root is None:
|
|
740
|
+
project_root = Path.cwd()
|
|
741
|
+
|
|
742
|
+
try:
|
|
743
|
+
from ..services.mcp_config_manager import MCPConfigManager
|
|
744
|
+
|
|
745
|
+
manager = MCPConfigManager()
|
|
746
|
+
vector_search_path = manager.detect_service_path("mcp-vector-search")
|
|
747
|
+
|
|
748
|
+
if not vector_search_path:
|
|
749
|
+
logger.debug("mcp-vector-search not found, skipping indexing")
|
|
750
|
+
return
|
|
751
|
+
|
|
752
|
+
# Build the command
|
|
753
|
+
if "python" in vector_search_path:
|
|
754
|
+
cmd = [
|
|
755
|
+
vector_search_path,
|
|
756
|
+
"-m",
|
|
757
|
+
"mcp_vector_search.cli",
|
|
758
|
+
"index",
|
|
759
|
+
str(project_root),
|
|
760
|
+
]
|
|
761
|
+
else:
|
|
762
|
+
cmd = [vector_search_path, "index", str(project_root)]
|
|
763
|
+
|
|
764
|
+
logger.info(
|
|
765
|
+
"MCP Vector Search: Starting background indexing for improved code search"
|
|
766
|
+
)
|
|
767
|
+
|
|
768
|
+
# Start the indexing process in the background
|
|
769
|
+
process = subprocess.Popen(
|
|
770
|
+
cmd,
|
|
771
|
+
stdout=subprocess.DEVNULL,
|
|
772
|
+
stderr=subprocess.DEVNULL,
|
|
773
|
+
cwd=str(project_root),
|
|
774
|
+
)
|
|
775
|
+
|
|
776
|
+
logger.debug(
|
|
777
|
+
f"MCP Vector Search: Indexing process started (PID: {process.pid})"
|
|
778
|
+
)
|
|
779
|
+
|
|
780
|
+
except Exception as e:
|
|
781
|
+
logger.debug(f"Failed to start vector search indexing: {e}")
|
|
782
|
+
|
|
783
|
+
|
|
622
784
|
def get_latest_startup_log(project_root: Optional[Path] = None) -> Optional[Path]:
|
|
623
785
|
"""
|
|
624
786
|
Get the path to the most recent startup log file.
|
|
@@ -667,6 +829,10 @@ def log_startup_status(monitor_mode: bool = False, websocket_port: int = 8765) -
|
|
|
667
829
|
# Log monitor setup status
|
|
668
830
|
status_logger.log_monitor_setup_status(monitor_mode, websocket_port)
|
|
669
831
|
|
|
832
|
+
# Trigger vector search indexing in the background after MCP is configured
|
|
833
|
+
# This will run asynchronously and not block startup
|
|
834
|
+
start_vector_search_indexing()
|
|
835
|
+
|
|
670
836
|
except Exception as e:
|
|
671
837
|
# Don't let logging failures prevent startup
|
|
672
838
|
logger = get_logger("cli")
|
claude_mpm/cli/utils.py
CHANGED
|
@@ -6,9 +6,10 @@ Centralizing these functions reduces code duplication and provides a single plac
|
|
|
6
6
|
for common CLI operations.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
+
import difflib
|
|
9
10
|
import sys
|
|
10
11
|
from pathlib import Path
|
|
11
|
-
from typing import Optional
|
|
12
|
+
from typing import List, Optional
|
|
12
13
|
|
|
13
14
|
from ..core.logger import get_logger
|
|
14
15
|
|
|
@@ -106,7 +107,7 @@ def get_agent_versions_display() -> Optional[str]:
|
|
|
106
107
|
base_version_tuple
|
|
107
108
|
)
|
|
108
109
|
output_lines.append(f"\n Base Agent Version: {base_version_str}")
|
|
109
|
-
except:
|
|
110
|
+
except Exception:
|
|
110
111
|
pass
|
|
111
112
|
|
|
112
113
|
# Check for agents needing migration
|
|
@@ -170,7 +171,7 @@ def setup_logging(args) -> object:
|
|
|
170
171
|
|
|
171
172
|
# Set default logging level if not specified
|
|
172
173
|
if not hasattr(args, "logging") or args.logging is None:
|
|
173
|
-
args.logging = LogLevel.
|
|
174
|
+
args.logging = LogLevel.OFF.value
|
|
174
175
|
|
|
175
176
|
# Handle deprecated --debug flag
|
|
176
177
|
if hasattr(args, "debug") and args.debug and args.logging == LogLevel.INFO.value:
|
|
@@ -207,3 +208,53 @@ def ensure_directories() -> None:
|
|
|
207
208
|
# Continue even if initialization fails
|
|
208
209
|
# The individual commands will handle missing directories as needed
|
|
209
210
|
pass
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def suggest_similar_commands(
|
|
214
|
+
invalid_command: str,
|
|
215
|
+
valid_commands: List[str],
|
|
216
|
+
cutoff: float = 0.6,
|
|
217
|
+
max_suggestions: int = 3,
|
|
218
|
+
) -> Optional[str]:
|
|
219
|
+
"""
|
|
220
|
+
Suggest similar commands for an invalid command using fuzzy matching.
|
|
221
|
+
|
|
222
|
+
WHY: Helps users quickly identify typos and discover correct command names
|
|
223
|
+
by suggesting the most similar valid commands. Uses stdlib difflib for
|
|
224
|
+
zero-dependency fuzzy matching.
|
|
225
|
+
|
|
226
|
+
DESIGN DECISION: Using difflib.get_close_matches provides good results for
|
|
227
|
+
typos and partial matches while being simple and lightweight (no external deps).
|
|
228
|
+
|
|
229
|
+
Args:
|
|
230
|
+
invalid_command: The invalid command the user typed
|
|
231
|
+
valid_commands: List of valid commands to match against
|
|
232
|
+
cutoff: Similarity threshold (0.0-1.0), default 0.6
|
|
233
|
+
max_suggestions: Maximum number of suggestions to return, default 3
|
|
234
|
+
|
|
235
|
+
Returns:
|
|
236
|
+
Formatted suggestion string or None if no good matches found
|
|
237
|
+
|
|
238
|
+
Examples:
|
|
239
|
+
>>> suggest_similar_commands("tickts", ["tickets", "run", "agents"])
|
|
240
|
+
"Did you mean 'tickets'?"
|
|
241
|
+
|
|
242
|
+
>>> suggest_similar_commands("mem", ["memory", "monitor", "mcp"])
|
|
243
|
+
"Did you mean one of these?\n memory\n monitor\n mcp"
|
|
244
|
+
|
|
245
|
+
>>> suggest_similar_commands("xyz", ["tickets", "run"])
|
|
246
|
+
None # No good matches
|
|
247
|
+
"""
|
|
248
|
+
# Use difflib to find close matches
|
|
249
|
+
matches = difflib.get_close_matches(
|
|
250
|
+
invalid_command, valid_commands, n=max_suggestions, cutoff=cutoff
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
if not matches:
|
|
254
|
+
return None
|
|
255
|
+
|
|
256
|
+
# Format suggestion message
|
|
257
|
+
if len(matches) == 1:
|
|
258
|
+
return f"Did you mean '{matches[0]}'?"
|
|
259
|
+
suggestions = "\n ".join(matches)
|
|
260
|
+
return f"Did you mean one of these?\n {suggestions}"
|
|
@@ -107,7 +107,7 @@ class CommandRegistry:
|
|
|
107
107
|
|
|
108
108
|
# Apply extra arguments
|
|
109
109
|
for arg_name, arg_config in command.extra_args.items():
|
|
110
|
-
flags = arg_config.pop("flags", [f
|
|
110
|
+
flags = arg_config.pop("flags", [f"--{arg_name.replace('_', '-')}"])
|
|
111
111
|
subparser.add_argument(*flags, **arg_config)
|
|
112
112
|
|
|
113
113
|
# Store handler reference
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
---
|
|
2
|
+
namespace: mpm/agents
|
|
3
|
+
command: auto-configure
|
|
4
|
+
aliases: [mpm-agents-auto-configure]
|
|
5
|
+
migration_target: /mpm/agents:auto-configure
|
|
6
|
+
category: agents
|
|
7
|
+
deprecated_aliases: [mpm-auto-configure]
|
|
8
|
+
description: Automatically detect project toolchain and configure appropriate agents
|
|
9
|
+
---
|
|
10
|
+
# Automatically configure agents based on project detection
|
|
11
|
+
|
|
12
|
+
Automatically detect your project's toolchain and configure the most appropriate agents.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/mpm-auto-configure [options]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Description
|
|
21
|
+
|
|
22
|
+
This command provides intelligent auto-configuration that:
|
|
23
|
+
1. Scans your project to detect programming languages, frameworks, and tools
|
|
24
|
+
2. Recommends the most appropriate agents for your stack
|
|
25
|
+
3. Optionally deploys the recommended agents with confirmation
|
|
26
|
+
|
|
27
|
+
This is the fastest way to get started with Claude MPM in any project!
|
|
28
|
+
|
|
29
|
+
## Options
|
|
30
|
+
|
|
31
|
+
- `--preview` - Show what would be configured without making any changes
|
|
32
|
+
- `--yes` - Automatically apply recommendations without prompting
|
|
33
|
+
- `--force` - Force reconfiguration even if agents are already deployed
|
|
34
|
+
|
|
35
|
+
## Implementation
|
|
36
|
+
|
|
37
|
+
When you run `/mpm-auto-configure`, the PM will:
|
|
38
|
+
|
|
39
|
+
1. **Detect Your Stack**:
|
|
40
|
+
- Scan for package.json, requirements.txt, Cargo.toml, go.mod, etc.
|
|
41
|
+
- Identify frameworks (FastAPI, Next.js, React, Express, etc.)
|
|
42
|
+
- Detect testing tools (pytest, Jest, Playwright, etc.)
|
|
43
|
+
- Find build tools and deployment configurations
|
|
44
|
+
|
|
45
|
+
2. **Recommend Agents**:
|
|
46
|
+
- **Essential agents**: Required for your primary stack
|
|
47
|
+
- **Recommended agents**: Complementary agents for full functionality
|
|
48
|
+
- **Optional agents**: Specialized agents for detected tools
|
|
49
|
+
|
|
50
|
+
3. **Deploy Agents** (with confirmation):
|
|
51
|
+
- Show what will be deployed
|
|
52
|
+
- Request confirmation (unless --yes is used)
|
|
53
|
+
- Deploy agents to your project
|
|
54
|
+
- Verify deployment success
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
### Preview Mode (Recommended First Step)
|
|
59
|
+
```
|
|
60
|
+
/mpm-auto-configure --preview
|
|
61
|
+
```
|
|
62
|
+
Shows what would be configured without making changes. Great for understanding recommendations before applying.
|
|
63
|
+
|
|
64
|
+
### Interactive Configuration
|
|
65
|
+
```
|
|
66
|
+
/mpm-auto-configure
|
|
67
|
+
```
|
|
68
|
+
Detect, recommend, and prompt for confirmation before deploying.
|
|
69
|
+
|
|
70
|
+
### Automatic Configuration
|
|
71
|
+
```
|
|
72
|
+
/mpm-auto-configure --yes
|
|
73
|
+
```
|
|
74
|
+
Automatically apply all recommendations without prompting. Best for quick setup.
|
|
75
|
+
|
|
76
|
+
### Force Reconfiguration
|
|
77
|
+
```
|
|
78
|
+
/mpm-auto-configure --force
|
|
79
|
+
```
|
|
80
|
+
Reconfigure agents even if some are already deployed. Useful for stack changes.
|
|
81
|
+
|
|
82
|
+
## Expected Output
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
🤖 Auto-Configuration for Claude MPM
|
|
86
|
+
=====================================
|
|
87
|
+
|
|
88
|
+
Step 1: Detecting Project Stack
|
|
89
|
+
--------------------------------
|
|
90
|
+
✓ Detected Python 3.11
|
|
91
|
+
✓ Detected FastAPI 0.104.0
|
|
92
|
+
✓ Detected pytest 7.4.0
|
|
93
|
+
✓ Detected Docker configuration
|
|
94
|
+
✓ Detected Vercel deployment
|
|
95
|
+
|
|
96
|
+
Step 2: Agent Recommendations
|
|
97
|
+
------------------------------
|
|
98
|
+
Essential Agents (3):
|
|
99
|
+
✓ fastapi-engineer - FastAPI framework detected
|
|
100
|
+
✓ python-engineer - Python project support
|
|
101
|
+
✓ api-qa - API testing and validation
|
|
102
|
+
|
|
103
|
+
Recommended Agents (2):
|
|
104
|
+
○ docker-ops - Docker configuration found
|
|
105
|
+
○ vercel-ops - Vercel deployment detected
|
|
106
|
+
|
|
107
|
+
Optional Agents (1):
|
|
108
|
+
○ playwright-qa - Browser testing capability
|
|
109
|
+
|
|
110
|
+
Step 3: Deploy Agents
|
|
111
|
+
---------------------
|
|
112
|
+
Deploy 5 agents? (y/n): y
|
|
113
|
+
|
|
114
|
+
Deploying agents...
|
|
115
|
+
✓ fastapi-engineer deployed
|
|
116
|
+
✓ python-engineer deployed
|
|
117
|
+
✓ api-qa deployed
|
|
118
|
+
✓ docker-ops deployed
|
|
119
|
+
✓ vercel-ops deployed
|
|
120
|
+
|
|
121
|
+
🎉 Auto-configuration complete!
|
|
122
|
+
5 agents deployed successfully.
|
|
123
|
+
|
|
124
|
+
Next steps:
|
|
125
|
+
- Run /mpm-agents to see your deployed agents
|
|
126
|
+
- Start working with specialized agents for your stack
|
|
127
|
+
- Use /mpm-help for more information
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## What Gets Detected
|
|
131
|
+
|
|
132
|
+
### Languages
|
|
133
|
+
- Python (CPython, PyPy)
|
|
134
|
+
- JavaScript/TypeScript (Node.js, Deno, Bun)
|
|
135
|
+
- Rust
|
|
136
|
+
- Go
|
|
137
|
+
- Java
|
|
138
|
+
|
|
139
|
+
### Python Frameworks
|
|
140
|
+
- FastAPI
|
|
141
|
+
- Flask
|
|
142
|
+
- Django
|
|
143
|
+
- Starlette
|
|
144
|
+
- Pyramid
|
|
145
|
+
|
|
146
|
+
### JavaScript/TypeScript Frameworks
|
|
147
|
+
- Next.js
|
|
148
|
+
- React
|
|
149
|
+
- Vue
|
|
150
|
+
- Svelte
|
|
151
|
+
- Angular
|
|
152
|
+
- Express
|
|
153
|
+
- Nest.js
|
|
154
|
+
- Fastify
|
|
155
|
+
|
|
156
|
+
### Testing Tools
|
|
157
|
+
- pytest (Python)
|
|
158
|
+
- unittest (Python)
|
|
159
|
+
- Jest (JavaScript)
|
|
160
|
+
- Vitest (JavaScript)
|
|
161
|
+
- Playwright (Browser)
|
|
162
|
+
- Cypress (Browser)
|
|
163
|
+
|
|
164
|
+
### Build Tools
|
|
165
|
+
- Vite
|
|
166
|
+
- Webpack
|
|
167
|
+
- Rollup
|
|
168
|
+
- esbuild
|
|
169
|
+
- Turbopack
|
|
170
|
+
|
|
171
|
+
### Deployment Platforms
|
|
172
|
+
- Vercel
|
|
173
|
+
- Railway
|
|
174
|
+
- Docker
|
|
175
|
+
- PM2
|
|
176
|
+
- Kubernetes
|
|
177
|
+
|
|
178
|
+
## Agent Mapping Examples
|
|
179
|
+
|
|
180
|
+
### Python + FastAPI
|
|
181
|
+
**Essential:**
|
|
182
|
+
- fastapi-engineer
|
|
183
|
+
- python-engineer
|
|
184
|
+
- api-qa
|
|
185
|
+
|
|
186
|
+
**Recommended:**
|
|
187
|
+
- docker-ops (if Docker detected)
|
|
188
|
+
- vercel-ops (if Vercel detected)
|
|
189
|
+
|
|
190
|
+
### Next.js + React
|
|
191
|
+
**Essential:**
|
|
192
|
+
- nextjs-engineer
|
|
193
|
+
- react-engineer
|
|
194
|
+
- web-qa
|
|
195
|
+
|
|
196
|
+
**Recommended:**
|
|
197
|
+
- playwright-qa (if Playwright detected)
|
|
198
|
+
- vercel-ops (if Vercel detected)
|
|
199
|
+
|
|
200
|
+
### Full-Stack (FastAPI + React)
|
|
201
|
+
**Essential:**
|
|
202
|
+
- fastapi-engineer
|
|
203
|
+
- python-engineer
|
|
204
|
+
- react-engineer
|
|
205
|
+
- api-qa
|
|
206
|
+
- web-qa
|
|
207
|
+
|
|
208
|
+
**Recommended:**
|
|
209
|
+
- playwright-qa
|
|
210
|
+
- docker-ops
|
|
211
|
+
- local-ops-agent
|
|
212
|
+
|
|
213
|
+
## Default Configuration Fallback
|
|
214
|
+
|
|
215
|
+
When auto-configuration cannot detect your project's toolchain (e.g., a new or uncommon language/framework), it automatically falls back to a sensible set of default general-purpose agents instead of leaving your project unconfigured.
|
|
216
|
+
|
|
217
|
+
### When Defaults are Applied
|
|
218
|
+
|
|
219
|
+
Default agents are deployed when:
|
|
220
|
+
- Primary language is detected as "Unknown"
|
|
221
|
+
- No specific framework or toolchain can be identified
|
|
222
|
+
- No agent recommendations can be generated from detected technologies
|
|
223
|
+
|
|
224
|
+
### Default Agents
|
|
225
|
+
|
|
226
|
+
The following general-purpose agents are recommended with moderate confidence (0.7):
|
|
227
|
+
|
|
228
|
+
- **engineer**: General-purpose engineer for code implementation
|
|
229
|
+
- **research**: Code exploration and analysis
|
|
230
|
+
- **qa**: Testing and quality assurance
|
|
231
|
+
- **ops**: Infrastructure and deployment operations
|
|
232
|
+
- **documentation**: Documentation and technical writing
|
|
233
|
+
|
|
234
|
+
All default recommendations will be marked with `is_default: True` in the metadata.
|
|
235
|
+
|
|
236
|
+
### Disabling Default Fallback
|
|
237
|
+
|
|
238
|
+
To disable the default configuration fallback, edit `.claude-mpm/config/agent_capabilities.yaml`:
|
|
239
|
+
|
|
240
|
+
```yaml
|
|
241
|
+
default_configuration:
|
|
242
|
+
enabled: false # Disable default fallback
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
When disabled, auto-configuration will recommend zero agents if the toolchain cannot be detected.
|
|
246
|
+
|
|
247
|
+
### Customizing Defaults
|
|
248
|
+
|
|
249
|
+
You can customize which agents are deployed by default by editing the `default_configuration.agents` section in `.claude-mpm/config/agent_capabilities.yaml`:
|
|
250
|
+
|
|
251
|
+
```yaml
|
|
252
|
+
default_configuration:
|
|
253
|
+
enabled: true
|
|
254
|
+
min_confidence: 0.7 # Confidence score for default recommendations
|
|
255
|
+
agents:
|
|
256
|
+
- agent_id: engineer
|
|
257
|
+
reasoning: "General-purpose engineer for code implementation"
|
|
258
|
+
priority: 1
|
|
259
|
+
- agent_id: research
|
|
260
|
+
reasoning: "Code exploration and analysis"
|
|
261
|
+
priority: 2
|
|
262
|
+
# Add or remove agents as needed
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Tips
|
|
266
|
+
|
|
267
|
+
1. **Start with preview**: Always run with `--preview` first to see recommendations
|
|
268
|
+
2. **Review carefully**: Check that detected stack matches your project
|
|
269
|
+
3. **Customize later**: You can always deploy/remove agents manually after auto-config
|
|
270
|
+
4. **Re-run after changes**: Run again with `--force` if you add new frameworks
|
|
271
|
+
5. **Complementary commands**: Use `/mpm-agents-detect` and `/mpm-agents-recommend` for more details
|
|
272
|
+
|
|
273
|
+
## Related Commands
|
|
274
|
+
|
|
275
|
+
- `/mpm-agents-detect` - Just show detected toolchain
|
|
276
|
+
- `/mpm-agents-recommend` - Show recommendations without deploying
|
|
277
|
+
- `/mpm-agents` - Manage agents manually
|
|
278
|
+
- `/mpm-help agents` - Learn about manual agent management
|