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
claude_mpm/cli/__init__.py
CHANGED
|
@@ -1,159 +1,121 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
from typing import Optional
|
|
3
|
-
|
|
4
1
|
"""
|
|
5
2
|
Claude MPM Command-Line Interface.
|
|
6
3
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
Main entry point for CLI. Implementation details extracted to:
|
|
5
|
+
- cli/helpers.py: Configuration checks and prompts
|
|
6
|
+
- cli/startup.py: Initialization (registry, MCP, updates)
|
|
7
|
+
- cli/executor.py: Command execution routing
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
interface while organizing code into logical modules. The main() function
|
|
13
|
-
remains the primary entry point for both direct execution and package imports.
|
|
9
|
+
Refactored from 803 lines to <130 lines (TSK-0053).
|
|
14
10
|
"""
|
|
15
11
|
|
|
12
|
+
import os
|
|
16
13
|
import sys
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
from typing import Optional
|
|
17
16
|
|
|
18
17
|
from claude_mpm.config.paths import paths
|
|
19
18
|
|
|
20
|
-
from ..constants import CLICommands
|
|
21
|
-
from .
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
manage_configure,
|
|
28
|
-
manage_debug,
|
|
29
|
-
manage_mcp,
|
|
30
|
-
manage_memory,
|
|
31
|
-
manage_monitor,
|
|
32
|
-
manage_tickets,
|
|
33
|
-
run_doctor,
|
|
34
|
-
run_session,
|
|
35
|
-
show_info,
|
|
19
|
+
from ..constants import CLICommands
|
|
20
|
+
from ..utils.progress import ProgressBar
|
|
21
|
+
from .executor import ensure_run_attributes, execute_command
|
|
22
|
+
from .helpers import (
|
|
23
|
+
handle_missing_configuration,
|
|
24
|
+
has_configuration_file,
|
|
25
|
+
should_skip_config_check,
|
|
36
26
|
)
|
|
37
|
-
from .commands.analyze_code import manage_analyze_code
|
|
38
|
-
from .commands.dashboard import manage_dashboard
|
|
39
27
|
from .parser import create_parser, preprocess_args
|
|
28
|
+
from .startup import (
|
|
29
|
+
run_background_services,
|
|
30
|
+
setup_configure_command_environment,
|
|
31
|
+
setup_early_environment,
|
|
32
|
+
setup_mcp_server_logging,
|
|
33
|
+
should_skip_background_services,
|
|
34
|
+
)
|
|
35
|
+
from .startup_display import display_startup_banner, should_show_banner
|
|
40
36
|
from .utils import ensure_directories, setup_logging
|
|
41
37
|
|
|
42
|
-
#
|
|
43
|
-
# Try package VERSION file first (for installed packages)
|
|
38
|
+
# Version resolution
|
|
44
39
|
package_version_file = Path(__file__).parent.parent / "VERSION"
|
|
45
40
|
if package_version_file.exists():
|
|
46
41
|
__version__ = package_version_file.read_text().strip()
|
|
47
|
-
# Use centralized path management for VERSION file
|
|
48
42
|
elif paths.version_file.exists():
|
|
49
43
|
__version__ = paths.version_file.read_text().strip()
|
|
50
44
|
else:
|
|
51
|
-
# Try to import from package as fallback
|
|
52
45
|
try:
|
|
53
46
|
from .. import __version__
|
|
54
47
|
except ImportError:
|
|
55
|
-
# Default version if all else fails
|
|
56
48
|
__version__ = "0.0.0"
|
|
57
49
|
|
|
58
50
|
|
|
59
51
|
def main(argv: Optional[list] = None):
|
|
60
|
-
"""
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
WHY: This function orchestrates the entire CLI flow:
|
|
64
|
-
1. Ensures directories exist
|
|
65
|
-
2. Preprocesses arguments (handling --mpm: prefix)
|
|
66
|
-
3. Parses arguments
|
|
67
|
-
4. Sets up logging
|
|
68
|
-
5. Executes the appropriate command
|
|
69
|
-
|
|
70
|
-
DESIGN DECISION: We keep error handling at this level to provide consistent
|
|
71
|
-
error messages and exit codes across all commands.
|
|
72
|
-
|
|
73
|
-
Args:
|
|
74
|
-
argv: Optional list of command line arguments for testing
|
|
75
|
-
|
|
76
|
-
Returns:
|
|
77
|
-
Exit code (0 for success, non-zero for errors)
|
|
78
|
-
"""
|
|
79
|
-
# Disable telemetry by default (set early in case any imported modules check it)
|
|
80
|
-
import os
|
|
81
|
-
|
|
82
|
-
os.environ.setdefault("DISABLE_TELEMETRY", "1")
|
|
52
|
+
"""Main CLI entry point orchestrating argument parsing and command execution."""
|
|
53
|
+
argv = setup_early_environment(argv)
|
|
83
54
|
|
|
84
|
-
# Ensure directories are initialized on first run
|
|
85
|
-
ensure_directories()
|
|
86
|
-
|
|
87
|
-
# Initialize or update project registry
|
|
88
|
-
_initialize_project_registry()
|
|
89
|
-
|
|
90
|
-
# Parse args early to check if we should skip auto-configuration
|
|
91
|
-
# (for commands like --version, --help, etc.)
|
|
92
55
|
parser = create_parser(version=__version__)
|
|
93
56
|
processed_argv = preprocess_args(argv)
|
|
94
57
|
args = parser.parse_args(processed_argv)
|
|
95
58
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
|
|
59
|
+
help_version_flags = ["--version", "-v", "--help", "-h"]
|
|
60
|
+
is_help_or_version = any(
|
|
61
|
+
flag in (processed_argv or sys.argv[1:]) for flag in help_version_flags
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
if not has_configuration_file() and not is_help_or_version:
|
|
65
|
+
if not should_skip_config_check(getattr(args, "command", None)):
|
|
66
|
+
handle_missing_configuration()
|
|
67
|
+
|
|
68
|
+
setup_configure_command_environment(args)
|
|
104
69
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
70
|
+
# CRITICAL: Setup logging BEFORE any initialization that creates loggers
|
|
71
|
+
# This ensures that ensure_directories() and run_background_services()
|
|
72
|
+
# respect the user's logging preference (default: OFF)
|
|
73
|
+
logger = setup_mcp_server_logging(args)
|
|
108
74
|
|
|
109
|
-
|
|
110
|
-
_verify_mcp_gateway_startup()
|
|
75
|
+
ensure_directories()
|
|
111
76
|
|
|
112
|
-
#
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
):
|
|
118
|
-
#
|
|
119
|
-
|
|
77
|
+
# Display startup banner FIRST (unless help/version/utility commands)
|
|
78
|
+
if should_show_banner(args):
|
|
79
|
+
logging_level = getattr(args, "logging", "OFF")
|
|
80
|
+
display_startup_banner(__version__, logging_level)
|
|
81
|
+
|
|
82
|
+
if not should_skip_background_services(args, processed_argv):
|
|
83
|
+
# Show "Launching Claude..." progress bar during background services startup
|
|
84
|
+
# This matches the visual style of agent/skill sync progress bars
|
|
85
|
+
launch_progress = ProgressBar(
|
|
86
|
+
total=100,
|
|
87
|
+
prefix="Launching Claude",
|
|
88
|
+
show_percentage=False,
|
|
89
|
+
show_counter=False,
|
|
90
|
+
bar_width=25,
|
|
91
|
+
)
|
|
120
92
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
#
|
|
127
|
-
|
|
128
|
-
|
|
93
|
+
try:
|
|
94
|
+
launch_progress.update(10) # Start progress
|
|
95
|
+
run_background_services()
|
|
96
|
+
launch_progress.finish(message="Ready")
|
|
97
|
+
|
|
98
|
+
# Inform user about Claude Code initialization delay (3-5 seconds)
|
|
99
|
+
# This message appears before os.execvpe() replaces our process
|
|
100
|
+
# See: docs/research/claude-startup-delay-analysis-2025-12-01.md
|
|
101
|
+
print(
|
|
102
|
+
"⏳ Starting Claude Code... (this may take a few seconds)",
|
|
103
|
+
flush=True,
|
|
129
104
|
)
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
logger = setup_logging(args)
|
|
134
|
-
else:
|
|
135
|
-
# Normal logging for all other commands
|
|
136
|
-
logger = setup_logging(args)
|
|
105
|
+
except Exception:
|
|
106
|
+
launch_progress.finish(message="Failed")
|
|
107
|
+
raise
|
|
137
108
|
|
|
138
|
-
# Debug output if requested
|
|
139
109
|
if hasattr(args, "debug") and args.debug:
|
|
140
110
|
logger.debug(f"Command: {args.command}")
|
|
141
111
|
logger.debug(f"Arguments: {args}")
|
|
142
112
|
|
|
143
|
-
# Hook system note: Claude Code hooks are handled externally via the
|
|
144
|
-
# hook_handler.py script installed in ~/.claude/settings.json
|
|
145
|
-
# The --no-hooks flag is kept for backward compatibility but doesn't affect
|
|
146
|
-
# Claude Code hooks which are configured separately.
|
|
147
|
-
|
|
148
|
-
# Default to run command if no command specified
|
|
149
113
|
if not args.command:
|
|
150
114
|
args.command = CLICommands.RUN.value
|
|
151
|
-
|
|
152
|
-
_ensure_run_attributes(args)
|
|
115
|
+
ensure_run_attributes(args)
|
|
153
116
|
|
|
154
|
-
# Execute command
|
|
155
117
|
try:
|
|
156
|
-
return
|
|
118
|
+
return execute_command(args.command, args)
|
|
157
119
|
except KeyboardInterrupt:
|
|
158
120
|
logger.info("Session interrupted by user")
|
|
159
121
|
return 0
|
|
@@ -166,272 +128,6 @@ def main(argv: Optional[list] = None):
|
|
|
166
128
|
return 1
|
|
167
129
|
|
|
168
130
|
|
|
169
|
-
def _initialize_project_registry():
|
|
170
|
-
"""
|
|
171
|
-
Initialize or update the project registry for the current session.
|
|
172
|
-
|
|
173
|
-
WHY: The project registry tracks all claude-mpm projects and their metadata
|
|
174
|
-
across sessions. This function ensures the current project is properly
|
|
175
|
-
registered and updates session information.
|
|
176
|
-
|
|
177
|
-
DESIGN DECISION: Registry failures are logged but don't prevent startup
|
|
178
|
-
to ensure claude-mpm remains functional even if registry operations fail.
|
|
179
|
-
"""
|
|
180
|
-
try:
|
|
181
|
-
from ..services.project.registry import ProjectRegistry
|
|
182
|
-
|
|
183
|
-
registry = ProjectRegistry()
|
|
184
|
-
registry.get_or_create_project_entry()
|
|
185
|
-
except Exception as e:
|
|
186
|
-
# Import logger here to avoid circular imports
|
|
187
|
-
from ..core.logger import get_logger
|
|
188
|
-
|
|
189
|
-
logger = get_logger("cli")
|
|
190
|
-
logger.debug(f"Failed to initialize project registry: {e}")
|
|
191
|
-
# Continue execution - registry failure shouldn't block startup
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
def _check_mcp_auto_configuration():
|
|
195
|
-
"""
|
|
196
|
-
Check and potentially auto-configure MCP for pipx installations.
|
|
197
|
-
|
|
198
|
-
WHY: Users installing via pipx should have MCP work out-of-the-box with
|
|
199
|
-
minimal friction. This function offers one-time auto-configuration with
|
|
200
|
-
user consent.
|
|
201
|
-
|
|
202
|
-
DESIGN DECISION: This is blocking but quick - it only runs once and has
|
|
203
|
-
a 10-second timeout. We want to catch users on first run for the best
|
|
204
|
-
experience.
|
|
205
|
-
"""
|
|
206
|
-
try:
|
|
207
|
-
from ..services.mcp_gateway.auto_configure import check_and_configure_mcp
|
|
208
|
-
|
|
209
|
-
# This function handles all the logic:
|
|
210
|
-
# - Checks if already configured
|
|
211
|
-
# - Checks if pipx installation
|
|
212
|
-
# - Checks if already asked before
|
|
213
|
-
# - Prompts user if needed
|
|
214
|
-
# - Configures if user agrees
|
|
215
|
-
check_and_configure_mcp()
|
|
216
|
-
|
|
217
|
-
except Exception as e:
|
|
218
|
-
# Non-critical - log but don't fail
|
|
219
|
-
from ..core.logger import get_logger
|
|
220
|
-
|
|
221
|
-
logger = get_logger("cli")
|
|
222
|
-
logger.debug(f"MCP auto-configuration check failed: {e}")
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
def _verify_mcp_gateway_startup():
|
|
226
|
-
"""
|
|
227
|
-
Verify MCP Gateway configuration on startup and pre-warm MCP services.
|
|
228
|
-
|
|
229
|
-
WHY: The MCP gateway should be automatically configured and verified on startup
|
|
230
|
-
to provide a seamless experience with diagnostic tools, file summarizer, and
|
|
231
|
-
ticket service. Pre-warming MCP services eliminates the 11.9s delay on first use.
|
|
232
|
-
|
|
233
|
-
DESIGN DECISION: This is non-blocking - failures are logged but don't prevent
|
|
234
|
-
startup to ensure claude-mpm remains functional even if MCP gateway has issues.
|
|
235
|
-
"""
|
|
236
|
-
try:
|
|
237
|
-
import asyncio
|
|
238
|
-
import time
|
|
239
|
-
|
|
240
|
-
from ..core.logger import get_logger
|
|
241
|
-
from ..services.mcp_gateway.core.process_pool import pre_warm_mcp_servers
|
|
242
|
-
from ..services.mcp_gateway.core.startup_verification import (
|
|
243
|
-
is_mcp_gateway_configured,
|
|
244
|
-
verify_mcp_gateway_on_startup,
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
logger = get_logger("mcp_prewarm")
|
|
248
|
-
|
|
249
|
-
# Quick check first - if already configured, skip detailed verification
|
|
250
|
-
gateway_configured = is_mcp_gateway_configured()
|
|
251
|
-
|
|
252
|
-
# Pre-warm MCP servers regardless of gateway config
|
|
253
|
-
# This eliminates the 11.9s delay on first agent invocation
|
|
254
|
-
def run_pre_warming():
|
|
255
|
-
try:
|
|
256
|
-
start_time = time.time()
|
|
257
|
-
loop = asyncio.new_event_loop()
|
|
258
|
-
asyncio.set_event_loop(loop)
|
|
259
|
-
|
|
260
|
-
# Pre-warm MCP servers (especially vector search)
|
|
261
|
-
logger.info("Pre-warming MCP servers to eliminate startup delay...")
|
|
262
|
-
loop.run_until_complete(pre_warm_mcp_servers())
|
|
263
|
-
|
|
264
|
-
pre_warm_time = time.time() - start_time
|
|
265
|
-
if pre_warm_time > 1.0:
|
|
266
|
-
logger.info(f"MCP servers pre-warmed in {pre_warm_time:.2f}s")
|
|
267
|
-
|
|
268
|
-
# Also run gateway verification if needed
|
|
269
|
-
if not gateway_configured:
|
|
270
|
-
loop.run_until_complete(verify_mcp_gateway_on_startup())
|
|
271
|
-
|
|
272
|
-
loop.close()
|
|
273
|
-
except Exception as e:
|
|
274
|
-
# Non-blocking - log but don't fail
|
|
275
|
-
logger.debug(f"MCP pre-warming error (non-critical): {e}")
|
|
276
|
-
|
|
277
|
-
# Run pre-warming in background thread
|
|
278
|
-
import threading
|
|
279
|
-
|
|
280
|
-
pre_warm_thread = threading.Thread(target=run_pre_warming, daemon=True)
|
|
281
|
-
pre_warm_thread.start()
|
|
282
|
-
|
|
283
|
-
return
|
|
284
|
-
|
|
285
|
-
# Run detailed verification in background if not configured
|
|
286
|
-
if not gateway_configured:
|
|
287
|
-
# Note: We don't await this to avoid blocking startup
|
|
288
|
-
def run_verification():
|
|
289
|
-
try:
|
|
290
|
-
loop = asyncio.new_event_loop()
|
|
291
|
-
asyncio.set_event_loop(loop)
|
|
292
|
-
results = loop.run_until_complete(verify_mcp_gateway_on_startup())
|
|
293
|
-
loop.close()
|
|
294
|
-
|
|
295
|
-
# Log results but don't block
|
|
296
|
-
from ..core.logger import get_logger
|
|
297
|
-
|
|
298
|
-
logger = get_logger("cli")
|
|
299
|
-
|
|
300
|
-
if results.get("gateway_configured"):
|
|
301
|
-
logger.debug("MCP Gateway verification completed successfully")
|
|
302
|
-
else:
|
|
303
|
-
logger.debug("MCP Gateway verification completed with warnings")
|
|
304
|
-
|
|
305
|
-
except Exception as e:
|
|
306
|
-
from ..core.logger import get_logger
|
|
307
|
-
|
|
308
|
-
logger = get_logger("cli")
|
|
309
|
-
logger.debug(f"MCP Gateway verification failed: {e}")
|
|
310
|
-
|
|
311
|
-
# Run in background thread to avoid blocking startup
|
|
312
|
-
import threading
|
|
313
|
-
|
|
314
|
-
verification_thread = threading.Thread(target=run_verification, daemon=True)
|
|
315
|
-
verification_thread.start()
|
|
316
|
-
|
|
317
|
-
except Exception as e:
|
|
318
|
-
# Import logger here to avoid circular imports
|
|
319
|
-
from ..core.logger import get_logger
|
|
320
|
-
|
|
321
|
-
logger = get_logger("cli")
|
|
322
|
-
logger.debug(f"Failed to start MCP Gateway verification: {e}")
|
|
323
|
-
# Continue execution - MCP gateway issues shouldn't block startup
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
def _ensure_run_attributes(args):
|
|
327
|
-
"""
|
|
328
|
-
Ensure run command attributes exist when defaulting to run.
|
|
329
|
-
|
|
330
|
-
WHY: When no command is specified, we default to 'run' but the args object
|
|
331
|
-
won't have run-specific attributes from the subparser. This function ensures
|
|
332
|
-
they exist with sensible defaults.
|
|
333
|
-
|
|
334
|
-
Args:
|
|
335
|
-
args: Parsed arguments object to update
|
|
336
|
-
"""
|
|
337
|
-
# Set defaults for run command attributes
|
|
338
|
-
args.no_tickets = getattr(args, "no_tickets", False)
|
|
339
|
-
args.no_hooks = getattr(args, "no_hooks", False)
|
|
340
|
-
args.intercept_commands = getattr(args, "intercept_commands", False)
|
|
341
|
-
args.input = getattr(args, "input", None)
|
|
342
|
-
args.non_interactive = getattr(args, "non_interactive", False)
|
|
343
|
-
args.no_native_agents = getattr(args, "no_native_agents", False)
|
|
344
|
-
|
|
345
|
-
# Handle claude_args - if --resume flag is set, add it to claude_args
|
|
346
|
-
claude_args = getattr(args, "claude_args", [])
|
|
347
|
-
if getattr(args, "resume", False):
|
|
348
|
-
# Add --resume to claude_args if not already present
|
|
349
|
-
if "--resume" not in claude_args:
|
|
350
|
-
claude_args = ["--resume", *claude_args]
|
|
351
|
-
args.claude_args = claude_args
|
|
352
|
-
|
|
353
|
-
args.launch_method = getattr(args, "launch_method", "exec")
|
|
354
|
-
args.websocket = getattr(args, "websocket", False)
|
|
355
|
-
args.websocket_port = getattr(args, "websocket_port", 8765)
|
|
356
|
-
# CRITICAL: Include mpm_resume attribute for session resumption
|
|
357
|
-
args.mpm_resume = getattr(args, "mpm_resume", None)
|
|
358
|
-
# Also include monitor and force attributes
|
|
359
|
-
args.monitor = getattr(args, "monitor", False)
|
|
360
|
-
args.force = getattr(args, "force", False)
|
|
361
|
-
# Include dependency checking attributes
|
|
362
|
-
args.check_dependencies = getattr(args, "check_dependencies", True)
|
|
363
|
-
args.force_check_dependencies = getattr(args, "force_check_dependencies", False)
|
|
364
|
-
args.no_prompt = getattr(args, "no_prompt", False)
|
|
365
|
-
args.force_prompt = getattr(args, "force_prompt", False)
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
def _execute_command(command: str, args) -> int:
|
|
369
|
-
"""
|
|
370
|
-
Execute the specified command.
|
|
371
|
-
|
|
372
|
-
WHY: This function maps command names to their implementations, providing
|
|
373
|
-
a single place to manage command routing. Experimental commands are imported
|
|
374
|
-
lazily to avoid loading unnecessary code.
|
|
375
|
-
|
|
376
|
-
DESIGN DECISION: run_guarded is imported only when needed to maintain
|
|
377
|
-
separation between stable and experimental features.
|
|
378
|
-
|
|
379
|
-
Args:
|
|
380
|
-
command: The command name to execute
|
|
381
|
-
args: Parsed command line arguments
|
|
382
|
-
|
|
383
|
-
Returns:
|
|
384
|
-
Exit code from the command
|
|
385
|
-
"""
|
|
386
|
-
# Handle experimental run-guarded command separately with lazy import
|
|
387
|
-
if command == "run-guarded":
|
|
388
|
-
# Lazy import to avoid loading experimental code unless needed
|
|
389
|
-
from .commands.run_guarded import execute_run_guarded
|
|
390
|
-
|
|
391
|
-
result = execute_run_guarded(args)
|
|
392
|
-
return result if result is not None else 0
|
|
393
|
-
|
|
394
|
-
# Handle mpm-init command with lazy import
|
|
395
|
-
if command == "mpm-init":
|
|
396
|
-
# Lazy import to avoid loading unless needed
|
|
397
|
-
from .commands.mpm_init_handler import manage_mpm_init
|
|
398
|
-
|
|
399
|
-
result = manage_mpm_init(args)
|
|
400
|
-
return result if result is not None else 0
|
|
401
|
-
|
|
402
|
-
# Map stable commands to their implementations
|
|
403
|
-
command_map = {
|
|
404
|
-
CLICommands.RUN.value: run_session,
|
|
405
|
-
# CLICommands.RUN_GUARDED.value is handled above
|
|
406
|
-
CLICommands.TICKETS.value: manage_tickets,
|
|
407
|
-
CLICommands.INFO.value: show_info,
|
|
408
|
-
CLICommands.AGENTS.value: manage_agents,
|
|
409
|
-
CLICommands.AGENT_MANAGER.value: manage_agent_manager,
|
|
410
|
-
CLICommands.MEMORY.value: manage_memory,
|
|
411
|
-
CLICommands.MONITOR.value: manage_monitor,
|
|
412
|
-
CLICommands.DASHBOARD.value: manage_dashboard,
|
|
413
|
-
CLICommands.CONFIG.value: manage_config,
|
|
414
|
-
CLICommands.CONFIGURE.value: manage_configure,
|
|
415
|
-
CLICommands.AGGREGATE.value: aggregate_command,
|
|
416
|
-
CLICommands.ANALYZE_CODE.value: manage_analyze_code,
|
|
417
|
-
CLICommands.CLEANUP.value: cleanup_memory,
|
|
418
|
-
CLICommands.MCP.value: manage_mcp,
|
|
419
|
-
CLICommands.DOCTOR.value: run_doctor,
|
|
420
|
-
"debug": manage_debug, # Add debug command
|
|
421
|
-
"mpm-init": None, # Will be handled separately with lazy import
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
# Execute command if found
|
|
425
|
-
if command in command_map:
|
|
426
|
-
result = command_map[command](args)
|
|
427
|
-
# Commands may return None (success) or an exit code
|
|
428
|
-
return result if result is not None else 0
|
|
429
|
-
# Unknown command - this shouldn't happen with argparse
|
|
430
|
-
# but we handle it for completeness
|
|
431
|
-
print(f"Unknown command: {command}")
|
|
432
|
-
return 1
|
|
433
|
-
|
|
434
|
-
|
|
435
131
|
# For backward compatibility - export main
|
|
436
132
|
if __name__ == "__main__":
|
|
437
133
|
sys.exit(main())
|
|
@@ -19,7 +19,9 @@ from .info import show_info
|
|
|
19
19
|
from .mcp import manage_mcp
|
|
20
20
|
from .memory import manage_memory
|
|
21
21
|
from .monitor import manage_monitor
|
|
22
|
+
from .postmortem import run_postmortem
|
|
22
23
|
from .run import run_session
|
|
24
|
+
from .skills import manage_skills
|
|
23
25
|
from .tickets import list_tickets, manage_tickets
|
|
24
26
|
|
|
25
27
|
__all__ = [
|
|
@@ -36,9 +38,11 @@ __all__ = [
|
|
|
36
38
|
"manage_mcp",
|
|
37
39
|
"manage_memory",
|
|
38
40
|
"manage_monitor",
|
|
41
|
+
"manage_skills",
|
|
39
42
|
# 'run_guarded_session', # Excluded from default exports (experimental)
|
|
40
43
|
"manage_tickets",
|
|
41
44
|
"run_doctor",
|
|
45
|
+
"run_postmortem",
|
|
42
46
|
"run_session",
|
|
43
47
|
"show_info",
|
|
44
48
|
]
|