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
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Search command parser for mcp-vector-search integration.
|
|
3
|
+
|
|
4
|
+
This module provides argument parsing for the /mpm-search command.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import argparse
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def add_search_subparser(
|
|
12
|
+
subparsers: argparse._SubParsersAction,
|
|
13
|
+
) -> argparse.ArgumentParser:
|
|
14
|
+
"""
|
|
15
|
+
Add the search command parser.
|
|
16
|
+
|
|
17
|
+
Args:
|
|
18
|
+
subparsers: The subparsers action to add the search parser to.
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
The created search parser.
|
|
22
|
+
"""
|
|
23
|
+
search_parser = subparsers.add_parser(
|
|
24
|
+
"mpm-search",
|
|
25
|
+
aliases=["search"],
|
|
26
|
+
help="Search codebase using semantic search",
|
|
27
|
+
description=(
|
|
28
|
+
"Search the codebase using semantic search powered by mcp-vector-search. "
|
|
29
|
+
"Can search by query, find similar code, search by context, or manage the search index."
|
|
30
|
+
),
|
|
31
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
32
|
+
epilog="""
|
|
33
|
+
Examples:
|
|
34
|
+
# Search for code by query
|
|
35
|
+
claude-mpm mpm-search "authentication logic"
|
|
36
|
+
|
|
37
|
+
# Find code similar to a file
|
|
38
|
+
claude-mpm mpm-search --similar src/auth.py
|
|
39
|
+
|
|
40
|
+
# Search by contextual description
|
|
41
|
+
claude-mpm mpm-search --context "find all API endpoints"
|
|
42
|
+
|
|
43
|
+
# Index the project (required before searching)
|
|
44
|
+
claude-mpm mpm-search --index
|
|
45
|
+
|
|
46
|
+
# Force reindex the project
|
|
47
|
+
claude-mpm mpm-search --index --force
|
|
48
|
+
|
|
49
|
+
# Check index status
|
|
50
|
+
claude-mpm mpm-search --status
|
|
51
|
+
|
|
52
|
+
# Search with filters
|
|
53
|
+
claude-mpm mpm-search "database" --language python --limit 20
|
|
54
|
+
|
|
55
|
+
# Search with multiple file extensions
|
|
56
|
+
claude-mpm mpm-search "test" --extensions .py --extensions .js
|
|
57
|
+
|
|
58
|
+
# Find similar code to a specific function
|
|
59
|
+
claude-mpm mpm-search --similar src/auth.py --function authenticate_user
|
|
60
|
+
|
|
61
|
+
# Search with context and focus areas
|
|
62
|
+
claude-mpm mpm-search --context "security vulnerabilities" --focus authentication --focus encryption
|
|
63
|
+
|
|
64
|
+
# Output as JSON for processing
|
|
65
|
+
claude-mpm mpm-search "api" --json
|
|
66
|
+
""",
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
# Primary search modes (mutually exclusive)
|
|
70
|
+
search_mode = search_parser.add_mutually_exclusive_group()
|
|
71
|
+
|
|
72
|
+
search_mode.add_argument(
|
|
73
|
+
"query",
|
|
74
|
+
nargs="?",
|
|
75
|
+
help="Search query for semantic code search",
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
search_mode.add_argument(
|
|
79
|
+
"--similar",
|
|
80
|
+
"-s",
|
|
81
|
+
metavar="FILE",
|
|
82
|
+
help="Find code similar to the specified file",
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
search_mode.add_argument(
|
|
86
|
+
"--context",
|
|
87
|
+
"-c",
|
|
88
|
+
metavar="DESCRIPTION",
|
|
89
|
+
help="Search by contextual description of what you're looking for",
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
# Index management options
|
|
93
|
+
search_parser.add_argument(
|
|
94
|
+
"--index",
|
|
95
|
+
action="store_true",
|
|
96
|
+
help="Index or reindex the project codebase",
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
search_parser.add_argument(
|
|
100
|
+
"--status",
|
|
101
|
+
action="store_true",
|
|
102
|
+
help="Check project indexing status and statistics",
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
# Search filters and options
|
|
106
|
+
search_parser.add_argument(
|
|
107
|
+
"--limit",
|
|
108
|
+
"-l",
|
|
109
|
+
type=int,
|
|
110
|
+
default=10,
|
|
111
|
+
metavar="N",
|
|
112
|
+
help="Maximum number of results to return (default: 10, max: 50)",
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
search_parser.add_argument(
|
|
116
|
+
"--threshold",
|
|
117
|
+
"-t",
|
|
118
|
+
type=float,
|
|
119
|
+
default=0.3,
|
|
120
|
+
metavar="SCORE",
|
|
121
|
+
help="Similarity threshold between 0.0 and 1.0 (default: 0.3)",
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
search_parser.add_argument(
|
|
125
|
+
"--language",
|
|
126
|
+
metavar="LANG",
|
|
127
|
+
help="Filter by programming language (e.g., python, javascript, go)",
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
search_parser.add_argument(
|
|
131
|
+
"--extensions",
|
|
132
|
+
action="append",
|
|
133
|
+
metavar="EXT",
|
|
134
|
+
help="Filter by file extensions (e.g., .py, .js). Can be specified multiple times",
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
# Options for --similar mode
|
|
138
|
+
search_parser.add_argument(
|
|
139
|
+
"--function",
|
|
140
|
+
"-f",
|
|
141
|
+
metavar="NAME",
|
|
142
|
+
help="Function name within the file (used with --similar)",
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
# Options for --context mode
|
|
146
|
+
search_parser.add_argument(
|
|
147
|
+
"--focus",
|
|
148
|
+
action="append",
|
|
149
|
+
metavar="AREA",
|
|
150
|
+
help="Focus areas for contextual search (e.g., security, performance). Can be specified multiple times",
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
# Options for --index mode
|
|
154
|
+
search_parser.add_argument(
|
|
155
|
+
"--force",
|
|
156
|
+
action="store_true",
|
|
157
|
+
help="Force reindexing even if index already exists (used with --index)",
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
# Output options
|
|
161
|
+
search_parser.add_argument(
|
|
162
|
+
"--json",
|
|
163
|
+
action="store_true",
|
|
164
|
+
dest="output_json",
|
|
165
|
+
help="Output results as JSON instead of formatted text",
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
# Additional filters
|
|
169
|
+
search_parser.add_argument(
|
|
170
|
+
"--class",
|
|
171
|
+
dest="class_name",
|
|
172
|
+
metavar="NAME",
|
|
173
|
+
help="Filter by class name",
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
search_parser.add_argument(
|
|
177
|
+
"--files",
|
|
178
|
+
metavar="PATTERN",
|
|
179
|
+
help="Filter by file patterns (e.g., '*.py' or 'src/*.js')",
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
# Verbose output
|
|
183
|
+
search_parser.add_argument(
|
|
184
|
+
"-v",
|
|
185
|
+
"--verbose",
|
|
186
|
+
action="store_true",
|
|
187
|
+
help="Enable verbose output with additional details",
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
return search_parser
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def validate_search_args(args: argparse.Namespace) -> Optional[str]:
|
|
194
|
+
"""
|
|
195
|
+
Validate search command arguments.
|
|
196
|
+
|
|
197
|
+
Args:
|
|
198
|
+
args: Parsed command line arguments.
|
|
199
|
+
|
|
200
|
+
Returns:
|
|
201
|
+
Error message if validation fails, None otherwise.
|
|
202
|
+
"""
|
|
203
|
+
# Check threshold is in valid range
|
|
204
|
+
if hasattr(args, "threshold") and args.threshold is not None:
|
|
205
|
+
if not 0.0 <= args.threshold <= 1.0:
|
|
206
|
+
return "Similarity threshold must be between 0.0 and 1.0"
|
|
207
|
+
|
|
208
|
+
# Check limit is reasonable
|
|
209
|
+
if hasattr(args, "limit") and args.limit is not None:
|
|
210
|
+
if args.limit < 1:
|
|
211
|
+
return "Limit must be at least 1"
|
|
212
|
+
if args.limit > 50:
|
|
213
|
+
return "Limit cannot exceed 50"
|
|
214
|
+
|
|
215
|
+
# Check that function is only used with --similar
|
|
216
|
+
if (
|
|
217
|
+
hasattr(args, "function")
|
|
218
|
+
and args.function
|
|
219
|
+
and not getattr(args, "similar", None)
|
|
220
|
+
):
|
|
221
|
+
return "--function can only be used with --similar"
|
|
222
|
+
|
|
223
|
+
# Check that focus is only used with --context
|
|
224
|
+
if hasattr(args, "focus") and args.focus and not getattr(args, "context", None):
|
|
225
|
+
return "--focus can only be used with --context"
|
|
226
|
+
|
|
227
|
+
# Check that force is only used with --index
|
|
228
|
+
if hasattr(args, "force") and args.force and not getattr(args, "index", False):
|
|
229
|
+
return "--force can only be used with --index"
|
|
230
|
+
|
|
231
|
+
# Ensure at least one operation is specified
|
|
232
|
+
if hasattr(args, "command") and args.command in ["mpm-search", "search"]:
|
|
233
|
+
has_operation = any(
|
|
234
|
+
[
|
|
235
|
+
getattr(args, "query", None),
|
|
236
|
+
getattr(args, "similar", None),
|
|
237
|
+
getattr(args, "context", None),
|
|
238
|
+
getattr(args, "index", False),
|
|
239
|
+
getattr(args, "status", False),
|
|
240
|
+
]
|
|
241
|
+
)
|
|
242
|
+
if not has_operation:
|
|
243
|
+
return "No search operation specified. Use --help for options."
|
|
244
|
+
|
|
245
|
+
return None
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"""Skill source command parser for skill repository management.
|
|
2
|
+
|
|
3
|
+
WHY: This module provides CLI commands for managing skill source repositories
|
|
4
|
+
(Git repositories containing skill JSON files). Parallel to agent source management
|
|
5
|
+
but for the Skills feature (single-tier Git-based skills system).
|
|
6
|
+
|
|
7
|
+
DESIGN DECISION: Skill source management is separate from skill deployment to
|
|
8
|
+
maintain clear separation of concerns:
|
|
9
|
+
- skill-source commands: Manage repository configuration
|
|
10
|
+
- skills commands: View and interact with skills themselves
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import argparse
|
|
14
|
+
|
|
15
|
+
from .base_parser import add_common_arguments
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def add_skill_source_subparser(subparsers) -> argparse.ArgumentParser:
|
|
19
|
+
"""Add the skill-source subparser with all repository management commands.
|
|
20
|
+
|
|
21
|
+
WHY: Skill sources (Git repositories) need their own command group
|
|
22
|
+
for managing repository configuration, priorities, and synchronization.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
subparsers: The subparsers object from the main parser
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
The configured skill-source subparser
|
|
29
|
+
"""
|
|
30
|
+
# Skill source command with subcommands
|
|
31
|
+
skill_source_parser = subparsers.add_parser(
|
|
32
|
+
"skill-source",
|
|
33
|
+
help="Manage skill source repositories",
|
|
34
|
+
)
|
|
35
|
+
add_common_arguments(skill_source_parser)
|
|
36
|
+
|
|
37
|
+
skill_source_subparsers = skill_source_parser.add_subparsers(
|
|
38
|
+
dest="skill_source_command",
|
|
39
|
+
help="Skill source repository commands",
|
|
40
|
+
metavar="SUBCOMMAND",
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Add repository
|
|
44
|
+
add_parser = skill_source_subparsers.add_parser(
|
|
45
|
+
"add",
|
|
46
|
+
help="Add a new skill source repository",
|
|
47
|
+
)
|
|
48
|
+
add_parser.add_argument(
|
|
49
|
+
"url",
|
|
50
|
+
help="Git repository URL (e.g., https://github.com/owner/repo)",
|
|
51
|
+
)
|
|
52
|
+
add_parser.add_argument(
|
|
53
|
+
"--branch",
|
|
54
|
+
default="main",
|
|
55
|
+
help="Git branch to use (default: main)",
|
|
56
|
+
)
|
|
57
|
+
add_parser.add_argument(
|
|
58
|
+
"--priority",
|
|
59
|
+
type=int,
|
|
60
|
+
default=100,
|
|
61
|
+
help="Priority for conflict resolution (lower = higher precedence, default: 100)",
|
|
62
|
+
)
|
|
63
|
+
add_parser.add_argument(
|
|
64
|
+
"--disabled",
|
|
65
|
+
action="store_true",
|
|
66
|
+
help="Add repository but keep it disabled",
|
|
67
|
+
)
|
|
68
|
+
add_parser.add_argument(
|
|
69
|
+
"--test",
|
|
70
|
+
action="store_true",
|
|
71
|
+
help="Test repository access without saving to configuration",
|
|
72
|
+
)
|
|
73
|
+
add_parser.add_argument(
|
|
74
|
+
"--no-test",
|
|
75
|
+
action="store_true",
|
|
76
|
+
dest="skip_test",
|
|
77
|
+
help="Skip immediate testing (not recommended)",
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# Remove repository
|
|
81
|
+
remove_parser = skill_source_subparsers.add_parser(
|
|
82
|
+
"remove",
|
|
83
|
+
help="Remove a skill source repository",
|
|
84
|
+
)
|
|
85
|
+
remove_parser.add_argument(
|
|
86
|
+
"source_id",
|
|
87
|
+
help="Source identifier (e.g., repository name)",
|
|
88
|
+
)
|
|
89
|
+
remove_parser.add_argument(
|
|
90
|
+
"--force",
|
|
91
|
+
action="store_true",
|
|
92
|
+
help="Skip confirmation prompt",
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
# List repositories
|
|
96
|
+
list_parser = skill_source_subparsers.add_parser(
|
|
97
|
+
"list",
|
|
98
|
+
help="List configured skill source repositories",
|
|
99
|
+
)
|
|
100
|
+
list_parser.add_argument(
|
|
101
|
+
"--by-priority",
|
|
102
|
+
action="store_true",
|
|
103
|
+
dest="by_priority",
|
|
104
|
+
help="Sort by priority (lowest first)",
|
|
105
|
+
)
|
|
106
|
+
list_parser.add_argument(
|
|
107
|
+
"--enabled-only",
|
|
108
|
+
action="store_true",
|
|
109
|
+
dest="enabled_only",
|
|
110
|
+
help="Show only enabled repositories",
|
|
111
|
+
)
|
|
112
|
+
list_parser.add_argument(
|
|
113
|
+
"--json",
|
|
114
|
+
action="store_true",
|
|
115
|
+
help="Output as JSON",
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# Update/sync repositories
|
|
119
|
+
update_parser = skill_source_subparsers.add_parser(
|
|
120
|
+
"update",
|
|
121
|
+
help="Update (sync) skill sources from Git",
|
|
122
|
+
)
|
|
123
|
+
update_parser.add_argument(
|
|
124
|
+
"source_id",
|
|
125
|
+
nargs="?",
|
|
126
|
+
help="Optional: Update only this repository (default: update all)",
|
|
127
|
+
)
|
|
128
|
+
update_parser.add_argument(
|
|
129
|
+
"--force",
|
|
130
|
+
action="store_true",
|
|
131
|
+
help="Force update even if cache is fresh",
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
# Enable repository
|
|
135
|
+
enable_parser = skill_source_subparsers.add_parser(
|
|
136
|
+
"enable",
|
|
137
|
+
help="Enable a disabled repository",
|
|
138
|
+
)
|
|
139
|
+
enable_parser.add_argument(
|
|
140
|
+
"source_id",
|
|
141
|
+
help="Source identifier to enable",
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
# Disable repository
|
|
145
|
+
disable_parser = skill_source_subparsers.add_parser(
|
|
146
|
+
"disable",
|
|
147
|
+
help="Disable a repository",
|
|
148
|
+
)
|
|
149
|
+
disable_parser.add_argument(
|
|
150
|
+
"source_id",
|
|
151
|
+
help="Source identifier to disable",
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
# Show repository details
|
|
155
|
+
show_parser = skill_source_subparsers.add_parser(
|
|
156
|
+
"show",
|
|
157
|
+
help="Show details for a skill source",
|
|
158
|
+
)
|
|
159
|
+
show_parser.add_argument(
|
|
160
|
+
"source_id",
|
|
161
|
+
help="Source identifier to show",
|
|
162
|
+
)
|
|
163
|
+
show_parser.add_argument(
|
|
164
|
+
"--skills",
|
|
165
|
+
action="store_true",
|
|
166
|
+
help="Also list skills from this source",
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
return skill_source_parser
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Skills command parser for claude-mpm CLI.
|
|
3
|
+
|
|
4
|
+
WHY: This module contains all arguments specific to skills management commands,
|
|
5
|
+
providing CLI access to the Skills Integration system.
|
|
6
|
+
|
|
7
|
+
DESIGN DECISION: Skills commands expose the SkillsService functionality via CLI
|
|
8
|
+
for listing, deploying, validating, updating, and configuring Claude Code skills.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import argparse
|
|
12
|
+
|
|
13
|
+
from ...constants import CLICommands, SkillsCommands
|
|
14
|
+
from .base_parser import add_common_arguments
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def add_skills_subparser(subparsers) -> argparse.ArgumentParser:
|
|
18
|
+
"""
|
|
19
|
+
Add the skills subparser with all skills management commands.
|
|
20
|
+
|
|
21
|
+
WHY: Skills management has multiple subcommands for discovery, deployment,
|
|
22
|
+
validation, updates, and configuration that need their own argument structures.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
subparsers: The subparsers object from the main parser
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
The configured skills subparser
|
|
29
|
+
"""
|
|
30
|
+
# Skills command with subcommands
|
|
31
|
+
skills_parser = subparsers.add_parser(
|
|
32
|
+
CLICommands.SKILLS.value, help="Manage Claude Code skills"
|
|
33
|
+
)
|
|
34
|
+
add_common_arguments(skills_parser)
|
|
35
|
+
|
|
36
|
+
skills_subparsers = skills_parser.add_subparsers(
|
|
37
|
+
dest="skills_command", help="Skills commands", metavar="SUBCOMMAND"
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
# List command
|
|
41
|
+
list_parser = skills_subparsers.add_parser(
|
|
42
|
+
SkillsCommands.LIST.value, help="List available skills"
|
|
43
|
+
)
|
|
44
|
+
list_parser.add_argument(
|
|
45
|
+
"--category",
|
|
46
|
+
help="Filter by category (e.g., development, infrastructure, web-development)",
|
|
47
|
+
)
|
|
48
|
+
list_parser.add_argument(
|
|
49
|
+
"--agent", help="Show skills for specific agent (e.g., engineer, pm)"
|
|
50
|
+
)
|
|
51
|
+
list_parser.add_argument(
|
|
52
|
+
"--verbose",
|
|
53
|
+
"-v",
|
|
54
|
+
action="store_true",
|
|
55
|
+
help="Show detailed skill information",
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
# Deploy command
|
|
59
|
+
deploy_parser = skills_subparsers.add_parser(
|
|
60
|
+
SkillsCommands.DEPLOY.value, help="Deploy bundled skills to project"
|
|
61
|
+
)
|
|
62
|
+
deploy_parser.add_argument(
|
|
63
|
+
"--force",
|
|
64
|
+
action="store_true",
|
|
65
|
+
help="Force redeployment of already deployed skills",
|
|
66
|
+
)
|
|
67
|
+
deploy_parser.add_argument(
|
|
68
|
+
"--skill",
|
|
69
|
+
action="append",
|
|
70
|
+
dest="skills",
|
|
71
|
+
help="Deploy specific skill(s) only (can be used multiple times)",
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# Validate command
|
|
75
|
+
validate_parser = skills_subparsers.add_parser(
|
|
76
|
+
SkillsCommands.VALIDATE.value, help="Validate skill structure and metadata"
|
|
77
|
+
)
|
|
78
|
+
validate_parser.add_argument("skill_name", help="Name of the skill to validate")
|
|
79
|
+
validate_parser.add_argument(
|
|
80
|
+
"--strict",
|
|
81
|
+
action="store_true",
|
|
82
|
+
help="Use strict validation (treat warnings as errors)",
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
# Update command
|
|
86
|
+
update_parser = skills_subparsers.add_parser(
|
|
87
|
+
SkillsCommands.UPDATE.value, help="Check for and install skill updates"
|
|
88
|
+
)
|
|
89
|
+
update_parser.add_argument(
|
|
90
|
+
"skill_names",
|
|
91
|
+
nargs="*",
|
|
92
|
+
help="Specific skills to update (default: all)",
|
|
93
|
+
)
|
|
94
|
+
update_parser.add_argument(
|
|
95
|
+
"--check-only",
|
|
96
|
+
action="store_true",
|
|
97
|
+
help="Check for updates without installing them",
|
|
98
|
+
)
|
|
99
|
+
update_parser.add_argument(
|
|
100
|
+
"--force",
|
|
101
|
+
action="store_true",
|
|
102
|
+
help="Force update even if versions match",
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
# Info command
|
|
106
|
+
info_parser = skills_subparsers.add_parser(
|
|
107
|
+
SkillsCommands.INFO.value, help="Show detailed skill information"
|
|
108
|
+
)
|
|
109
|
+
info_parser.add_argument("skill_name", help="Name of the skill")
|
|
110
|
+
info_parser.add_argument(
|
|
111
|
+
"--show-content",
|
|
112
|
+
action="store_true",
|
|
113
|
+
help="Show full skill content (SKILL.md)",
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
# Config command
|
|
117
|
+
config_parser = skills_subparsers.add_parser(
|
|
118
|
+
SkillsCommands.CONFIG.value, help="View or edit skills configuration"
|
|
119
|
+
)
|
|
120
|
+
config_parser.add_argument(
|
|
121
|
+
"--scope",
|
|
122
|
+
choices=["system", "user", "project"],
|
|
123
|
+
default="project",
|
|
124
|
+
help="Configuration scope (default: project)",
|
|
125
|
+
)
|
|
126
|
+
config_parser.add_argument(
|
|
127
|
+
"--edit",
|
|
128
|
+
action="store_true",
|
|
129
|
+
help="Open configuration in $EDITOR",
|
|
130
|
+
)
|
|
131
|
+
config_parser.add_argument(
|
|
132
|
+
"--path",
|
|
133
|
+
action="store_true",
|
|
134
|
+
help="Show configuration file path",
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
# Configure command (interactive skills selection)
|
|
138
|
+
skills_subparsers.add_parser(
|
|
139
|
+
SkillsCommands.CONFIGURE.value,
|
|
140
|
+
help="Interactive skills configuration with checkbox selection (like agents configure)",
|
|
141
|
+
)
|
|
142
|
+
# No additional arguments needed - purely interactive
|
|
143
|
+
|
|
144
|
+
# GitHub deployment commands
|
|
145
|
+
# Deploy from GitHub command
|
|
146
|
+
deploy_github_parser = skills_subparsers.add_parser(
|
|
147
|
+
SkillsCommands.DEPLOY_FROM_GITHUB.value,
|
|
148
|
+
help="Deploy skills from GitHub to ~/.claude/skills/ for Claude Code",
|
|
149
|
+
)
|
|
150
|
+
deploy_github_parser.add_argument(
|
|
151
|
+
"--collection",
|
|
152
|
+
"-c",
|
|
153
|
+
help="Collection to deploy from (default: uses default collection)",
|
|
154
|
+
)
|
|
155
|
+
deploy_github_parser.add_argument(
|
|
156
|
+
"--toolchain",
|
|
157
|
+
nargs="+",
|
|
158
|
+
help="Filter by toolchain/language (e.g., python javascript rust)",
|
|
159
|
+
)
|
|
160
|
+
deploy_github_parser.add_argument(
|
|
161
|
+
"--categories",
|
|
162
|
+
nargs="+",
|
|
163
|
+
help="Filter by categories (e.g., testing debugging web)",
|
|
164
|
+
)
|
|
165
|
+
deploy_github_parser.add_argument(
|
|
166
|
+
"--force",
|
|
167
|
+
action="store_true",
|
|
168
|
+
help="Force redeployment of already deployed skills",
|
|
169
|
+
)
|
|
170
|
+
deploy_github_parser.add_argument(
|
|
171
|
+
"--all",
|
|
172
|
+
action="store_true",
|
|
173
|
+
help="Deploy all available skills (no filtering)",
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
# List available GitHub skills
|
|
177
|
+
list_available_parser = skills_subparsers.add_parser(
|
|
178
|
+
SkillsCommands.LIST_AVAILABLE.value,
|
|
179
|
+
help="List all available skills from GitHub repository",
|
|
180
|
+
)
|
|
181
|
+
list_available_parser.add_argument(
|
|
182
|
+
"--collection",
|
|
183
|
+
"-c",
|
|
184
|
+
help="Collection to list from (default: uses default collection)",
|
|
185
|
+
)
|
|
186
|
+
list_available_parser.add_argument(
|
|
187
|
+
"--verbose",
|
|
188
|
+
"-v",
|
|
189
|
+
action="store_true",
|
|
190
|
+
help="Show detailed skill information including names",
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
# Check deployed skills
|
|
194
|
+
skills_subparsers.add_parser(
|
|
195
|
+
SkillsCommands.CHECK_DEPLOYED.value,
|
|
196
|
+
help="Check which skills are currently deployed in ~/.claude/skills/",
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
# Remove skills
|
|
200
|
+
remove_parser = skills_subparsers.add_parser(
|
|
201
|
+
SkillsCommands.REMOVE.value,
|
|
202
|
+
help="Remove deployed skills from ~/.claude/skills/",
|
|
203
|
+
)
|
|
204
|
+
remove_parser.add_argument(
|
|
205
|
+
"skill_names",
|
|
206
|
+
nargs="*",
|
|
207
|
+
help="Specific skills to remove",
|
|
208
|
+
)
|
|
209
|
+
remove_parser.add_argument(
|
|
210
|
+
"--all",
|
|
211
|
+
action="store_true",
|
|
212
|
+
help="Remove all deployed skills",
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
# Collection management commands
|
|
216
|
+
# List collections
|
|
217
|
+
skills_subparsers.add_parser(
|
|
218
|
+
SkillsCommands.COLLECTION_LIST.value,
|
|
219
|
+
help="List all configured skill collections",
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
# Add collection
|
|
223
|
+
collection_add_parser = skills_subparsers.add_parser(
|
|
224
|
+
SkillsCommands.COLLECTION_ADD.value,
|
|
225
|
+
help="Add a new skill collection from GitHub",
|
|
226
|
+
)
|
|
227
|
+
collection_add_parser.add_argument(
|
|
228
|
+
"collection_name",
|
|
229
|
+
help="Name for the collection (e.g., obra-superpowers)",
|
|
230
|
+
)
|
|
231
|
+
collection_add_parser.add_argument(
|
|
232
|
+
"collection_url",
|
|
233
|
+
help="GitHub repository URL (e.g., https://github.com/obra/superpowers)",
|
|
234
|
+
)
|
|
235
|
+
collection_add_parser.add_argument(
|
|
236
|
+
"--priority",
|
|
237
|
+
type=int,
|
|
238
|
+
default=99,
|
|
239
|
+
help="Collection priority (lower = higher priority, default: 99)",
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
# Remove collection
|
|
243
|
+
collection_remove_parser = skills_subparsers.add_parser(
|
|
244
|
+
SkillsCommands.COLLECTION_REMOVE.value,
|
|
245
|
+
help="Remove a skill collection",
|
|
246
|
+
)
|
|
247
|
+
collection_remove_parser.add_argument(
|
|
248
|
+
"collection_name",
|
|
249
|
+
help="Name of the collection to remove",
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
# Enable collection
|
|
253
|
+
collection_enable_parser = skills_subparsers.add_parser(
|
|
254
|
+
SkillsCommands.COLLECTION_ENABLE.value,
|
|
255
|
+
help="Enable a disabled collection",
|
|
256
|
+
)
|
|
257
|
+
collection_enable_parser.add_argument(
|
|
258
|
+
"collection_name",
|
|
259
|
+
help="Name of the collection to enable",
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
# Disable collection
|
|
263
|
+
collection_disable_parser = skills_subparsers.add_parser(
|
|
264
|
+
SkillsCommands.COLLECTION_DISABLE.value,
|
|
265
|
+
help="Disable a collection without removing it",
|
|
266
|
+
)
|
|
267
|
+
collection_disable_parser.add_argument(
|
|
268
|
+
"collection_name",
|
|
269
|
+
help="Name of the collection to disable",
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
# Set default collection
|
|
273
|
+
collection_set_default_parser = skills_subparsers.add_parser(
|
|
274
|
+
SkillsCommands.COLLECTION_SET_DEFAULT.value,
|
|
275
|
+
help="Set the default collection for deployments",
|
|
276
|
+
)
|
|
277
|
+
collection_set_default_parser.add_argument(
|
|
278
|
+
"collection_name",
|
|
279
|
+
help="Name of the collection to set as default",
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
return skills_parser
|