claude-mpm 3.9.11__py3-none-any.whl → 4.0.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- claude_mpm/VERSION +1 -1
- claude_mpm/__init__.py +2 -2
- claude_mpm/__main__.py +3 -2
- claude_mpm/agents/__init__.py +85 -79
- claude_mpm/agents/agent_loader.py +464 -1003
- claude_mpm/agents/agent_loader_integration.py +45 -45
- claude_mpm/agents/agents_metadata.py +29 -30
- claude_mpm/agents/async_agent_loader.py +156 -138
- claude_mpm/agents/base_agent.json +1 -1
- claude_mpm/agents/base_agent_loader.py +179 -151
- claude_mpm/agents/frontmatter_validator.py +229 -130
- claude_mpm/agents/schema/agent_schema.json +1 -1
- claude_mpm/agents/system_agent_config.py +213 -147
- claude_mpm/agents/templates/__init__.py +13 -13
- claude_mpm/agents/templates/code_analyzer.json +2 -2
- claude_mpm/agents/templates/data_engineer.json +1 -1
- claude_mpm/agents/templates/documentation.json +23 -11
- claude_mpm/agents/templates/engineer.json +22 -6
- claude_mpm/agents/templates/memory_manager.json +1 -1
- claude_mpm/agents/templates/ops.json +2 -2
- claude_mpm/agents/templates/project_organizer.json +1 -1
- claude_mpm/agents/templates/qa.json +1 -1
- claude_mpm/agents/templates/refactoring_engineer.json +222 -0
- claude_mpm/agents/templates/research.json +20 -14
- claude_mpm/agents/templates/security.json +1 -1
- claude_mpm/agents/templates/ticketing.json +2 -2
- claude_mpm/agents/templates/version_control.json +1 -1
- claude_mpm/agents/templates/web_qa.json +3 -1
- claude_mpm/agents/templates/web_ui.json +2 -2
- claude_mpm/cli/__init__.py +79 -51
- claude_mpm/cli/__main__.py +3 -2
- claude_mpm/cli/commands/__init__.py +20 -20
- claude_mpm/cli/commands/agents.py +279 -247
- claude_mpm/cli/commands/aggregate.py +138 -157
- claude_mpm/cli/commands/cleanup.py +147 -147
- claude_mpm/cli/commands/config.py +93 -76
- claude_mpm/cli/commands/info.py +17 -16
- claude_mpm/cli/commands/mcp.py +140 -905
- claude_mpm/cli/commands/mcp_command_router.py +139 -0
- claude_mpm/cli/commands/mcp_config_commands.py +20 -0
- claude_mpm/cli/commands/mcp_install_commands.py +20 -0
- claude_mpm/cli/commands/mcp_server_commands.py +175 -0
- claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
- claude_mpm/cli/commands/memory.py +239 -203
- claude_mpm/cli/commands/monitor.py +330 -86
- claude_mpm/cli/commands/run.py +380 -429
- claude_mpm/cli/commands/run_config_checker.py +160 -0
- claude_mpm/cli/commands/socketio_monitor.py +235 -0
- claude_mpm/cli/commands/tickets.py +363 -220
- claude_mpm/cli/parser.py +24 -1156
- claude_mpm/cli/parsers/__init__.py +29 -0
- claude_mpm/cli/parsers/agents_parser.py +136 -0
- claude_mpm/cli/parsers/base_parser.py +331 -0
- claude_mpm/cli/parsers/config_parser.py +85 -0
- claude_mpm/cli/parsers/mcp_parser.py +152 -0
- claude_mpm/cli/parsers/memory_parser.py +138 -0
- claude_mpm/cli/parsers/monitor_parser.py +124 -0
- claude_mpm/cli/parsers/run_parser.py +147 -0
- claude_mpm/cli/parsers/tickets_parser.py +203 -0
- claude_mpm/cli/ticket_cli.py +7 -3
- claude_mpm/cli/utils.py +55 -37
- claude_mpm/cli_module/__init__.py +6 -6
- claude_mpm/cli_module/args.py +188 -140
- claude_mpm/cli_module/commands.py +79 -70
- claude_mpm/cli_module/migration_example.py +38 -60
- claude_mpm/config/__init__.py +32 -25
- claude_mpm/config/agent_config.py +151 -119
- claude_mpm/config/experimental_features.py +71 -73
- claude_mpm/config/paths.py +94 -208
- claude_mpm/config/socketio_config.py +84 -73
- claude_mpm/constants.py +35 -18
- claude_mpm/core/__init__.py +9 -6
- claude_mpm/core/agent_name_normalizer.py +68 -71
- claude_mpm/core/agent_registry.py +372 -521
- claude_mpm/core/agent_session_manager.py +74 -63
- claude_mpm/core/base_service.py +116 -87
- claude_mpm/core/cache.py +119 -153
- claude_mpm/core/claude_runner.py +425 -1120
- claude_mpm/core/config.py +263 -168
- claude_mpm/core/config_aliases.py +69 -61
- claude_mpm/core/config_constants.py +292 -0
- claude_mpm/core/constants.py +57 -99
- claude_mpm/core/container.py +211 -178
- claude_mpm/core/exceptions.py +233 -89
- claude_mpm/core/factories.py +92 -54
- claude_mpm/core/framework_loader.py +378 -220
- claude_mpm/core/hook_manager.py +198 -83
- claude_mpm/core/hook_performance_config.py +136 -0
- claude_mpm/core/injectable_service.py +61 -55
- claude_mpm/core/interactive_session.py +165 -155
- claude_mpm/core/interfaces.py +221 -195
- claude_mpm/core/lazy.py +96 -96
- claude_mpm/core/logger.py +133 -107
- claude_mpm/core/logging_config.py +185 -157
- claude_mpm/core/minimal_framework_loader.py +20 -15
- claude_mpm/core/mixins.py +30 -29
- claude_mpm/core/oneshot_session.py +215 -181
- claude_mpm/core/optimized_agent_loader.py +134 -138
- claude_mpm/core/optimized_startup.py +159 -157
- claude_mpm/core/pm_hook_interceptor.py +85 -72
- claude_mpm/core/service_registry.py +103 -101
- claude_mpm/core/session_manager.py +97 -87
- claude_mpm/core/socketio_pool.py +212 -158
- claude_mpm/core/tool_access_control.py +58 -51
- claude_mpm/core/types.py +46 -24
- claude_mpm/core/typing_utils.py +166 -82
- claude_mpm/core/unified_agent_registry.py +721 -0
- claude_mpm/core/unified_config.py +550 -0
- claude_mpm/core/unified_paths.py +549 -0
- claude_mpm/dashboard/index.html +1 -1
- claude_mpm/dashboard/open_dashboard.py +51 -17
- claude_mpm/dashboard/static/built/components/agent-inference.js +2 -0
- claude_mpm/dashboard/static/built/components/event-processor.js +2 -0
- claude_mpm/dashboard/static/built/components/event-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/export-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +2 -0
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +2 -0
- claude_mpm/dashboard/static/built/components/hud-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +2 -0
- claude_mpm/dashboard/static/built/components/module-viewer.js +2 -0
- claude_mpm/dashboard/static/built/components/session-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/socket-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +2 -0
- claude_mpm/dashboard/static/built/components/working-directory.js +2 -0
- claude_mpm/dashboard/static/built/dashboard.js +2 -0
- claude_mpm/dashboard/static/built/socket-client.js +2 -0
- claude_mpm/dashboard/static/css/dashboard.css +27 -8
- claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
- claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
- claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
- claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
- claude_mpm/dashboard/static/dist/dashboard.js +2 -0
- claude_mpm/dashboard/static/dist/socket-client.js +2 -0
- claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
- claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
- claude_mpm/dashboard/static/js/components/event-viewer.js +93 -72
- claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +110 -96
- claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
- claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
- claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
- claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
- claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
- claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
- claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
- claude_mpm/dashboard/static/js/dashboard.js +178 -453
- claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
- claude_mpm/dashboard/static/js/socket-client.js +133 -53
- claude_mpm/dashboard/templates/index.html +40 -50
- claude_mpm/experimental/cli_enhancements.py +60 -58
- claude_mpm/generators/__init__.py +1 -1
- claude_mpm/generators/agent_profile_generator.py +75 -65
- claude_mpm/hooks/__init__.py +1 -1
- claude_mpm/hooks/base_hook.py +33 -28
- claude_mpm/hooks/claude_hooks/__init__.py +1 -1
- claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
- claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
- claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
- claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
- claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
- claude_mpm/hooks/memory_integration_hook.py +140 -100
- claude_mpm/hooks/tool_call_interceptor.py +89 -76
- claude_mpm/hooks/validation_hooks.py +57 -49
- claude_mpm/init.py +145 -121
- claude_mpm/models/__init__.py +9 -9
- claude_mpm/models/agent_definition.py +33 -23
- claude_mpm/models/agent_session.py +228 -200
- claude_mpm/scripts/__init__.py +1 -1
- claude_mpm/scripts/socketio_daemon.py +192 -75
- claude_mpm/scripts/socketio_server_manager.py +328 -0
- claude_mpm/scripts/start_activity_logging.py +25 -22
- claude_mpm/services/__init__.py +68 -43
- claude_mpm/services/agent_capabilities_service.py +271 -0
- claude_mpm/services/agents/__init__.py +23 -32
- claude_mpm/services/agents/deployment/__init__.py +3 -3
- claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
- claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
- claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
- claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
- claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
- claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
- claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
- claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
- claude_mpm/services/agents/deployment/agent_validator.py +352 -0
- claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
- claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
- claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
- claude_mpm/services/agents/deployment/config/__init__.py +13 -0
- claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
- claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
- claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
- claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
- claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
- claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
- claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
- claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
- claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
- claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
- claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
- claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
- claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
- claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
- claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
- claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
- claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
- claude_mpm/services/agents/deployment/results/__init__.py +13 -0
- claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
- claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
- claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
- claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
- claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
- claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
- claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
- claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
- claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
- claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
- claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
- claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
- claude_mpm/services/agents/loading/__init__.py +2 -2
- claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
- claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
- claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
- claude_mpm/services/agents/management/__init__.py +2 -2
- claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
- claude_mpm/services/agents/management/agent_management_service.py +209 -156
- claude_mpm/services/agents/memory/__init__.py +9 -6
- claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
- claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
- claude_mpm/services/agents/memory/analyzer.py +430 -0
- claude_mpm/services/agents/memory/content_manager.py +376 -0
- claude_mpm/services/agents/memory/template_generator.py +468 -0
- claude_mpm/services/agents/registry/__init__.py +7 -10
- claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
- claude_mpm/services/agents/registry/modification_tracker.py +351 -285
- claude_mpm/services/async_session_logger.py +187 -153
- claude_mpm/services/claude_session_logger.py +87 -72
- claude_mpm/services/command_handler_service.py +217 -0
- claude_mpm/services/communication/__init__.py +3 -2
- claude_mpm/services/core/__init__.py +50 -97
- claude_mpm/services/core/base.py +60 -53
- claude_mpm/services/core/interfaces/__init__.py +188 -0
- claude_mpm/services/core/interfaces/agent.py +351 -0
- claude_mpm/services/core/interfaces/communication.py +343 -0
- claude_mpm/services/core/interfaces/infrastructure.py +413 -0
- claude_mpm/services/core/interfaces/service.py +434 -0
- claude_mpm/services/core/interfaces.py +19 -944
- claude_mpm/services/event_aggregator.py +208 -170
- claude_mpm/services/exceptions.py +387 -308
- claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
- claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
- claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
- claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
- claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
- claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
- claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
- claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
- claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
- claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
- claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
- claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
- claude_mpm/services/hook_service.py +106 -114
- claude_mpm/services/infrastructure/__init__.py +7 -5
- claude_mpm/services/infrastructure/context_preservation.py +233 -199
- claude_mpm/services/infrastructure/daemon_manager.py +279 -0
- claude_mpm/services/infrastructure/logging.py +83 -76
- claude_mpm/services/infrastructure/monitoring.py +547 -404
- claude_mpm/services/mcp_gateway/__init__.py +30 -13
- claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
- claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
- claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
- claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
- claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
- claude_mpm/services/mcp_gateway/core/base.py +80 -67
- claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
- claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
- claude_mpm/services/mcp_gateway/main.py +287 -137
- claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
- claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
- claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
- claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
- claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
- claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
- claude_mpm/services/memory/__init__.py +2 -2
- claude_mpm/services/memory/builder.py +451 -362
- claude_mpm/services/memory/cache/__init__.py +2 -2
- claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
- claude_mpm/services/memory/cache/simple_cache.py +107 -93
- claude_mpm/services/memory/indexed_memory.py +195 -193
- claude_mpm/services/memory/optimizer.py +267 -234
- claude_mpm/services/memory/router.py +571 -263
- claude_mpm/services/memory_hook_service.py +237 -0
- claude_mpm/services/port_manager.py +575 -0
- claude_mpm/services/project/__init__.py +3 -3
- claude_mpm/services/project/analyzer.py +451 -305
- claude_mpm/services/project/registry.py +262 -240
- claude_mpm/services/recovery_manager.py +287 -231
- claude_mpm/services/response_tracker.py +87 -67
- claude_mpm/services/runner_configuration_service.py +587 -0
- claude_mpm/services/session_management_service.py +304 -0
- claude_mpm/services/socketio/__init__.py +4 -4
- claude_mpm/services/socketio/client_proxy.py +174 -0
- claude_mpm/services/socketio/handlers/__init__.py +3 -3
- claude_mpm/services/socketio/handlers/base.py +44 -30
- claude_mpm/services/socketio/handlers/connection.py +166 -64
- claude_mpm/services/socketio/handlers/file.py +123 -108
- claude_mpm/services/socketio/handlers/git.py +607 -373
- claude_mpm/services/socketio/handlers/hook.py +185 -0
- claude_mpm/services/socketio/handlers/memory.py +4 -4
- claude_mpm/services/socketio/handlers/project.py +4 -4
- claude_mpm/services/socketio/handlers/registry.py +53 -38
- claude_mpm/services/socketio/server/__init__.py +18 -0
- claude_mpm/services/socketio/server/broadcaster.py +252 -0
- claude_mpm/services/socketio/server/core.py +399 -0
- claude_mpm/services/socketio/server/main.py +323 -0
- claude_mpm/services/socketio_client_manager.py +160 -133
- claude_mpm/services/socketio_server.py +36 -1885
- claude_mpm/services/subprocess_launcher_service.py +316 -0
- claude_mpm/services/system_instructions_service.py +258 -0
- claude_mpm/services/ticket_manager.py +19 -533
- claude_mpm/services/utility_service.py +285 -0
- claude_mpm/services/version_control/__init__.py +18 -21
- claude_mpm/services/version_control/branch_strategy.py +20 -10
- claude_mpm/services/version_control/conflict_resolution.py +37 -13
- claude_mpm/services/version_control/git_operations.py +52 -21
- claude_mpm/services/version_control/semantic_versioning.py +92 -53
- claude_mpm/services/version_control/version_parser.py +145 -125
- claude_mpm/services/version_service.py +270 -0
- claude_mpm/storage/__init__.py +2 -2
- claude_mpm/storage/state_storage.py +177 -181
- claude_mpm/ticket_wrapper.py +2 -2
- claude_mpm/utils/__init__.py +2 -2
- claude_mpm/utils/agent_dependency_loader.py +453 -243
- claude_mpm/utils/config_manager.py +157 -118
- claude_mpm/utils/console.py +1 -1
- claude_mpm/utils/dependency_cache.py +102 -107
- claude_mpm/utils/dependency_manager.py +52 -47
- claude_mpm/utils/dependency_strategies.py +131 -96
- claude_mpm/utils/environment_context.py +110 -102
- claude_mpm/utils/error_handler.py +75 -55
- claude_mpm/utils/file_utils.py +80 -67
- claude_mpm/utils/framework_detection.py +12 -11
- claude_mpm/utils/import_migration_example.py +12 -60
- claude_mpm/utils/imports.py +48 -45
- claude_mpm/utils/path_operations.py +100 -93
- claude_mpm/utils/robust_installer.py +172 -164
- claude_mpm/utils/session_logging.py +30 -23
- claude_mpm/utils/subprocess_utils.py +99 -61
- claude_mpm/validation/__init__.py +1 -1
- claude_mpm/validation/agent_validator.py +151 -111
- claude_mpm/validation/frontmatter_validator.py +92 -71
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/METADATA +90 -22
- claude_mpm-4.0.4.dist-info/RECORD +417 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/entry_points.txt +1 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/licenses/LICENSE +1 -1
- claude_mpm/cli/commands/run_guarded.py +0 -511
- claude_mpm/config/memory_guardian_config.py +0 -325
- claude_mpm/config/memory_guardian_yaml.py +0 -335
- claude_mpm/core/config_paths.py +0 -150
- claude_mpm/core/memory_aware_runner.py +0 -353
- claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
- claude_mpm/deployment_paths.py +0 -261
- claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
- claude_mpm/models/state_models.py +0 -433
- claude_mpm/services/agent/__init__.py +0 -24
- claude_mpm/services/agent/deployment.py +0 -2548
- claude_mpm/services/agent/management.py +0 -598
- claude_mpm/services/agent/registry.py +0 -813
- claude_mpm/services/agents/registry/agent_registry.py +0 -813
- claude_mpm/services/communication/socketio.py +0 -1935
- claude_mpm/services/communication/websocket.py +0 -479
- claude_mpm/services/framework_claude_md_generator.py +0 -624
- claude_mpm/services/health_monitor.py +0 -893
- claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
- claude_mpm/services/infrastructure/health_monitor.py +0 -775
- claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
- claude_mpm/services/infrastructure/memory_guardian.py +0 -944
- claude_mpm/services/infrastructure/restart_protection.py +0 -642
- claude_mpm/services/infrastructure/state_manager.py +0 -774
- claude_mpm/services/mcp_gateway/manager.py +0 -334
- claude_mpm/services/optimized_hook_service.py +0 -542
- claude_mpm/services/project_analyzer.py +0 -864
- claude_mpm/services/project_registry.py +0 -608
- claude_mpm/services/standalone_socketio_server.py +0 -1300
- claude_mpm/services/ticket_manager_di.py +0 -318
- claude_mpm/services/ticketing_service_original.py +0 -510
- claude_mpm/utils/paths.py +0 -395
- claude_mpm/utils/platform_memory.py +0 -524
- claude_mpm-3.9.11.dist-info/RECORD +0 -306
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/WHEEL +0 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/top_level.txt +0 -0
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            from pathlib import Path
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            """
         | 
| 2 4 | 
             
            Claude Code Frontmatter Validator
         | 
| 3 5 |  | 
| @@ -6,216 +8,235 @@ Critical for ensuring agents work correctly with Claude Desktop. | |
| 6 8 | 
             
            """
         | 
| 7 9 |  | 
| 8 10 | 
             
            import re
         | 
| 9 | 
            -
            from pathlib import Path
         | 
| 10 11 | 
             
            from typing import Dict, List, Optional, Tuple
         | 
| 12 | 
            +
             | 
| 11 13 | 
             
            import yaml
         | 
| 12 14 |  | 
| 13 15 |  | 
| 14 16 | 
             
            class FrontmatterValidator:
         | 
| 15 17 | 
             
                """Validates agent frontmatter against Claude Code specification."""
         | 
| 16 | 
            -
             | 
| 18 | 
            +
             | 
| 17 19 | 
             
                # Claude Code name pattern: lowercase letters, numbers, hyphens only
         | 
| 18 20 | 
             
                # NO UNDERSCORES, NO UPPERCASE, NO SPECIAL CHARACTERS
         | 
| 19 | 
            -
                NAME_PATTERN = re.compile(r | 
| 20 | 
            -
             | 
| 21 | 
            +
                NAME_PATTERN = re.compile(r"^[a-z0-9]+(-[a-z0-9]+)*$")
         | 
| 22 | 
            +
             | 
| 21 23 | 
             
                # Valid tool names (from Claude Code spec)
         | 
| 22 24 | 
             
                VALID_TOOLS = {
         | 
| 23 | 
            -
                     | 
| 24 | 
            -
                     | 
| 25 | 
            -
                     | 
| 25 | 
            +
                    "Read",
         | 
| 26 | 
            +
                    "Write",
         | 
| 27 | 
            +
                    "Edit",
         | 
| 28 | 
            +
                    "MultiEdit",
         | 
| 29 | 
            +
                    "Bash",
         | 
| 30 | 
            +
                    "Grep",
         | 
| 31 | 
            +
                    "Glob",
         | 
| 32 | 
            +
                    "LS",
         | 
| 33 | 
            +
                    "WebSearch",
         | 
| 34 | 
            +
                    "WebFetch",
         | 
| 35 | 
            +
                    "TodoWrite",
         | 
| 36 | 
            +
                    "BashOutput",
         | 
| 37 | 
            +
                    "KillBash",
         | 
| 38 | 
            +
                    "NotebookEdit",
         | 
| 39 | 
            +
                    "Task",
         | 
| 40 | 
            +
                    "ExitPlanMode",
         | 
| 26 41 | 
             
                }
         | 
| 27 | 
            -
             | 
| 42 | 
            +
             | 
| 28 43 | 
             
                # Valid model tiers
         | 
| 29 | 
            -
                VALID_MODELS = { | 
| 30 | 
            -
             | 
| 44 | 
            +
                VALID_MODELS = {"opus", "sonnet", "haiku"}
         | 
| 45 | 
            +
             | 
| 31 46 | 
             
                # Required fields in frontmatter
         | 
| 32 | 
            -
                REQUIRED_FIELDS = { | 
| 33 | 
            -
             | 
| 47 | 
            +
                REQUIRED_FIELDS = {"name", "description", "tools"}
         | 
| 48 | 
            +
             | 
| 34 49 | 
             
                @classmethod
         | 
| 35 50 | 
             
                def validate_name(cls, name: str) -> Tuple[bool, Optional[str]]:
         | 
| 36 51 | 
             
                    """
         | 
| 37 52 | 
             
                    Validate agent name field against Claude Code spec.
         | 
| 38 | 
            -
             | 
| 53 | 
            +
             | 
| 39 54 | 
             
                    Args:
         | 
| 40 55 | 
             
                        name: Agent name to validate
         | 
| 41 | 
            -
             | 
| 56 | 
            +
             | 
| 42 57 | 
             
                    Returns:
         | 
| 43 58 | 
             
                        (is_valid, error_message)
         | 
| 44 59 | 
             
                    """
         | 
| 45 60 | 
             
                    if not name:
         | 
| 46 61 | 
             
                        return False, "Name field is required"
         | 
| 47 | 
            -
             | 
| 62 | 
            +
             | 
| 48 63 | 
             
                    if not cls.NAME_PATTERN.match(name):
         | 
| 49 64 | 
             
                        return False, (
         | 
| 50 65 | 
             
                            f"Invalid name '{name}'. Must match pattern ^[a-z0-9]+(-[a-z0-9]+)*$ "
         | 
| 51 66 | 
             
                            "(lowercase letters, numbers, and hyphens only - NO underscores!)"
         | 
| 52 67 | 
             
                        )
         | 
| 53 | 
            -
             | 
| 68 | 
            +
             | 
| 54 69 | 
             
                    if len(name) > 50:
         | 
| 55 70 | 
             
                        return False, f"Name '{name}' too long (max 50 characters)"
         | 
| 56 | 
            -
             | 
| 71 | 
            +
             | 
| 57 72 | 
             
                    return True, None
         | 
| 58 | 
            -
             | 
| 73 | 
            +
             | 
| 59 74 | 
             
                @classmethod
         | 
| 60 75 | 
             
                def validate_tools(cls, tools: str) -> Tuple[bool, Optional[str]]:
         | 
| 61 76 | 
             
                    """
         | 
| 62 77 | 
             
                    Validate tools field format and content.
         | 
| 63 | 
            -
             | 
| 78 | 
            +
             | 
| 64 79 | 
             
                    CRITICAL: Tools must be comma-separated WITHOUT spaces!
         | 
| 65 | 
            -
             | 
| 80 | 
            +
             | 
| 66 81 | 
             
                    Args:
         | 
| 67 82 | 
             
                        tools: Tools string to validate
         | 
| 68 | 
            -
             | 
| 83 | 
            +
             | 
| 69 84 | 
             
                    Returns:
         | 
| 70 85 | 
             
                        (is_valid, error_message)
         | 
| 71 86 | 
             
                    """
         | 
| 72 87 | 
             
                    if not tools:
         | 
| 73 88 | 
             
                        return False, "Tools field is required"
         | 
| 74 | 
            -
             | 
| 89 | 
            +
             | 
| 75 90 | 
             
                    # Check for spaces after commas (CRITICAL ERROR)
         | 
| 76 | 
            -
                    if  | 
| 91 | 
            +
                    if ", " in tools:
         | 
| 77 92 | 
             
                        return False, (
         | 
| 78 93 | 
             
                            f"CRITICAL: Tools contain spaces after commas! '{tools}' "
         | 
| 79 94 | 
             
                            "Must be comma-separated WITHOUT spaces (e.g., 'Read,Write,Edit')"
         | 
| 80 95 | 
             
                        )
         | 
| 81 | 
            -
             | 
| 96 | 
            +
             | 
| 82 97 | 
             
                    # Validate individual tools
         | 
| 83 | 
            -
                    tool_list = tools.split( | 
| 98 | 
            +
                    tool_list = tools.split(",")
         | 
| 84 99 | 
             
                    invalid_tools = [t for t in tool_list if t not in cls.VALID_TOOLS]
         | 
| 85 | 
            -
             | 
| 100 | 
            +
             | 
| 86 101 | 
             
                    if invalid_tools:
         | 
| 87 | 
            -
                        return  | 
| 88 | 
            -
             | 
| 102 | 
            +
                        return (
         | 
| 103 | 
            +
                            False,
         | 
| 104 | 
            +
                            f"Invalid tools: {', '.join(invalid_tools)}. Valid tools: {', '.join(sorted(cls.VALID_TOOLS))}",
         | 
| 105 | 
            +
                        )
         | 
| 106 | 
            +
             | 
| 89 107 | 
             
                    return True, None
         | 
| 90 | 
            -
             | 
| 108 | 
            +
             | 
| 91 109 | 
             
                @classmethod
         | 
| 92 110 | 
             
                def validate_model(cls, model: str) -> Tuple[bool, Optional[str]]:
         | 
| 93 111 | 
             
                    """
         | 
| 94 112 | 
             
                    Validate model field.
         | 
| 95 | 
            -
             | 
| 113 | 
            +
             | 
| 96 114 | 
             
                    Args:
         | 
| 97 115 | 
             
                        model: Model tier to validate
         | 
| 98 | 
            -
             | 
| 116 | 
            +
             | 
| 99 117 | 
             
                    Returns:
         | 
| 100 118 | 
             
                        (is_valid, error_message)
         | 
| 101 119 | 
             
                    """
         | 
| 102 120 | 
             
                    if model and model not in cls.VALID_MODELS:
         | 
| 103 | 
            -
                        return  | 
| 104 | 
            -
             | 
| 121 | 
            +
                        return (
         | 
| 122 | 
            +
                            False,
         | 
| 123 | 
            +
                            f"Invalid model '{model}'. Must be one of: {', '.join(cls.VALID_MODELS)}",
         | 
| 124 | 
            +
                        )
         | 
| 125 | 
            +
             | 
| 105 126 | 
             
                    return True, None
         | 
| 106 | 
            -
             | 
| 127 | 
            +
             | 
| 107 128 | 
             
                @classmethod
         | 
| 108 129 | 
             
                def validate_frontmatter(cls, frontmatter: Dict) -> List[str]:
         | 
| 109 130 | 
             
                    """
         | 
| 110 131 | 
             
                    Validate complete frontmatter structure.
         | 
| 111 | 
            -
             | 
| 132 | 
            +
             | 
| 112 133 | 
             
                    Args:
         | 
| 113 134 | 
             
                        frontmatter: Parsed frontmatter dictionary
         | 
| 114 | 
            -
             | 
| 135 | 
            +
             | 
| 115 136 | 
             
                    Returns:
         | 
| 116 137 | 
             
                        List of validation errors (empty if valid)
         | 
| 117 138 | 
             
                    """
         | 
| 118 139 | 
             
                    errors = []
         | 
| 119 | 
            -
             | 
| 140 | 
            +
             | 
| 120 141 | 
             
                    # Check required fields
         | 
| 121 142 | 
             
                    missing = cls.REQUIRED_FIELDS - set(frontmatter.keys())
         | 
| 122 143 | 
             
                    if missing:
         | 
| 123 144 | 
             
                        errors.append(f"Missing required fields: {', '.join(missing)}")
         | 
| 124 | 
            -
             | 
| 145 | 
            +
             | 
| 125 146 | 
             
                    # Validate name
         | 
| 126 | 
            -
                    if  | 
| 127 | 
            -
                        valid, error = cls.validate_name(frontmatter[ | 
| 147 | 
            +
                    if "name" in frontmatter:
         | 
| 148 | 
            +
                        valid, error = cls.validate_name(frontmatter["name"])
         | 
| 128 149 | 
             
                        if not valid:
         | 
| 129 150 | 
             
                            errors.append(error)
         | 
| 130 | 
            -
             | 
| 151 | 
            +
             | 
| 131 152 | 
             
                    # Validate tools
         | 
| 132 | 
            -
                    if  | 
| 133 | 
            -
                        valid, error = cls.validate_tools(frontmatter[ | 
| 153 | 
            +
                    if "tools" in frontmatter:
         | 
| 154 | 
            +
                        valid, error = cls.validate_tools(frontmatter["tools"])
         | 
| 134 155 | 
             
                        if not valid:
         | 
| 135 156 | 
             
                            errors.append(error)
         | 
| 136 | 
            -
             | 
| 157 | 
            +
             | 
| 137 158 | 
             
                    # Validate model
         | 
| 138 | 
            -
                    if  | 
| 139 | 
            -
                        valid, error = cls.validate_model(frontmatter[ | 
| 159 | 
            +
                    if "model" in frontmatter:
         | 
| 160 | 
            +
                        valid, error = cls.validate_model(frontmatter["model"])
         | 
| 140 161 | 
             
                        if not valid:
         | 
| 141 162 | 
             
                            errors.append(error)
         | 
| 142 | 
            -
             | 
| 163 | 
            +
             | 
| 143 164 | 
             
                    # Validate description
         | 
| 144 | 
            -
                    if  | 
| 145 | 
            -
                        desc = frontmatter[ | 
| 165 | 
            +
                    if "description" in frontmatter:
         | 
| 166 | 
            +
                        desc = frontmatter["description"]
         | 
| 146 167 | 
             
                        if len(desc) < 10:
         | 
| 147 168 | 
             
                            errors.append(f"Description too short ({len(desc)} chars, min 10)")
         | 
| 148 169 | 
             
                        if len(desc) > 200:
         | 
| 149 170 | 
             
                            errors.append(f"Description too long ({len(desc)} chars, max 200)")
         | 
| 150 | 
            -
             | 
| 171 | 
            +
             | 
| 151 172 | 
             
                    return errors
         | 
| 152 | 
            -
             | 
| 173 | 
            +
             | 
| 153 174 | 
             
                @classmethod
         | 
| 154 175 | 
             
                def validate_agent_file(cls, file_path: Path) -> List[str]:
         | 
| 155 176 | 
             
                    """
         | 
| 156 177 | 
             
                    Validate an agent markdown file.
         | 
| 157 | 
            -
             | 
| 178 | 
            +
             | 
| 158 179 | 
             
                    Args:
         | 
| 159 180 | 
             
                        file_path: Path to agent .md file
         | 
| 160 | 
            -
             | 
| 181 | 
            +
             | 
| 161 182 | 
             
                    Returns:
         | 
| 162 183 | 
             
                        List of validation errors (empty if valid)
         | 
| 163 184 | 
             
                    """
         | 
| 164 185 | 
             
                    errors = []
         | 
| 165 | 
            -
             | 
| 186 | 
            +
             | 
| 166 187 | 
             
                    try:
         | 
| 167 | 
            -
                        with open(file_path,  | 
| 188 | 
            +
                        with open(file_path, "r") as f:
         | 
| 168 189 | 
             
                            content = f.read()
         | 
| 169 | 
            -
             | 
| 190 | 
            +
             | 
| 170 191 | 
             
                        # Check for frontmatter markers
         | 
| 171 | 
            -
                        if not content.startswith( | 
| 192 | 
            +
                        if not content.startswith("---\n"):
         | 
| 172 193 | 
             
                            errors.append("File must start with '---' frontmatter marker")
         | 
| 173 194 | 
             
                            return errors
         | 
| 174 | 
            -
             | 
| 195 | 
            +
             | 
| 175 196 | 
             
                        # Extract frontmatter
         | 
| 176 | 
            -
                        end_marker = content.find( | 
| 197 | 
            +
                        end_marker = content.find("\n---\n", 4)
         | 
| 177 198 | 
             
                        if end_marker == -1:
         | 
| 178 199 | 
             
                            errors.append("Missing closing '---' frontmatter marker")
         | 
| 179 200 | 
             
                            return errors
         | 
| 180 | 
            -
             | 
| 201 | 
            +
             | 
| 181 202 | 
             
                        frontmatter_text = content[4:end_marker]
         | 
| 182 | 
            -
             | 
| 203 | 
            +
             | 
| 183 204 | 
             
                        # Parse YAML
         | 
| 184 205 | 
             
                        try:
         | 
| 185 206 | 
             
                            frontmatter = yaml.safe_load(frontmatter_text)
         | 
| 186 207 | 
             
                        except yaml.YAMLError as e:
         | 
| 187 208 | 
             
                            errors.append(f"Invalid YAML in frontmatter: {e}")
         | 
| 188 209 | 
             
                            return errors
         | 
| 189 | 
            -
             | 
| 210 | 
            +
             | 
| 190 211 | 
             
                        # Validate frontmatter content
         | 
| 191 212 | 
             
                        validation_errors = cls.validate_frontmatter(frontmatter)
         | 
| 192 213 | 
             
                        errors.extend(validation_errors)
         | 
| 193 | 
            -
             | 
| 214 | 
            +
             | 
| 194 215 | 
             
                    except Exception as e:
         | 
| 195 216 | 
             
                        errors.append(f"Error reading file: {e}")
         | 
| 196 | 
            -
             | 
| 217 | 
            +
             | 
| 197 218 | 
             
                    return errors
         | 
| 198 219 |  | 
| 199 220 |  | 
| 200 221 | 
             
            def main():
         | 
| 201 222 | 
             
                """Command-line validation tool."""
         | 
| 202 223 | 
             
                import sys
         | 
| 203 | 
            -
             | 
| 224 | 
            +
             | 
| 204 225 | 
             
                if len(sys.argv) < 2:
         | 
| 205 226 | 
             
                    print("Usage: python frontmatter_validator.py <agent.md> [agent2.md ...]")
         | 
| 206 227 | 
             
                    sys.exit(1)
         | 
| 207 | 
            -
             | 
| 228 | 
            +
             | 
| 208 229 | 
             
                all_valid = True
         | 
| 209 | 
            -
             | 
| 230 | 
            +
             | 
| 210 231 | 
             
                for file_path in sys.argv[1:]:
         | 
| 211 232 | 
             
                    path = Path(file_path)
         | 
| 212 233 | 
             
                    if not path.exists():
         | 
| 213 234 | 
             
                        print(f"❌ {file_path}: File not found")
         | 
| 214 235 | 
             
                        all_valid = False
         | 
| 215 236 | 
             
                        continue
         | 
| 216 | 
            -
             | 
| 237 | 
            +
             | 
| 217 238 | 
             
                    errors = FrontmatterValidator.validate_agent_file(path)
         | 
| 218 | 
            -
             | 
| 239 | 
            +
             | 
| 219 240 | 
             
                    if errors:
         | 
| 220 241 | 
             
                        print(f"❌ {file_path}:")
         | 
| 221 242 | 
             
                        for error in errors:
         | 
| @@ -223,9 +244,9 @@ def main(): | |
| 223 244 | 
             
                        all_valid = False
         | 
| 224 245 | 
             
                    else:
         | 
| 225 246 | 
             
                        print(f"✅ {file_path}: Valid")
         | 
| 226 | 
            -
             | 
| 247 | 
            +
             | 
| 227 248 | 
             
                sys.exit(0 if all_valid else 1)
         | 
| 228 249 |  | 
| 229 250 |  | 
| 230 251 | 
             
            if __name__ == "__main__":
         | 
| 231 | 
            -
                main()
         | 
| 252 | 
            +
                main()
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.4
         | 
| 2 2 | 
             
            Name: claude-mpm
         | 
| 3 | 
            -
            Version:  | 
| 3 | 
            +
            Version: 4.0.4
         | 
| 4 4 | 
             
            Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
         | 
| 5 5 | 
             
            Home-page: https://github.com/bobmatnyc/claude-mpm
         | 
| 6 6 | 
             
            Author: Claude MPM Team
         | 
| @@ -46,6 +46,7 @@ Requires-Dist: pytest-cov; extra == "dev" | |
| 46 46 | 
             
            Requires-Dist: black; extra == "dev"
         | 
| 47 47 | 
             
            Requires-Dist: flake8; extra == "dev"
         | 
| 48 48 | 
             
            Requires-Dist: mypy; extra == "dev"
         | 
| 49 | 
            +
            Requires-Dist: pre-commit; extra == "dev"
         | 
| 49 50 | 
             
            Provides-Extra: docs
         | 
| 50 51 | 
             
            Requires-Dist: sphinx>=7.2.0; extra == "docs"
         | 
| 51 52 | 
             
            Requires-Dist: sphinx-rtd-theme>=1.3.0; extra == "docs"
         | 
| @@ -107,14 +108,16 @@ A powerful orchestration framework for Claude Code that enables multi-agent work | |
| 107 108 |  | 
| 108 109 | 
             
            ## Features
         | 
| 109 110 |  | 
| 110 | 
            -
            - 🤖 **Multi-Agent System**:  | 
| 111 | 
            +
            - 🤖 **Multi-Agent System**: 15 specialized agents for comprehensive project management
         | 
| 111 112 | 
             
            - 🧠 **Agent Memory System**: Persistent learning with project-specific knowledge retention
         | 
| 112 113 | 
             
            - 🔄 **Session Management**: Resume previous sessions with `--resume` 
         | 
| 113 114 | 
             
            - 📊 **Real-Time Monitoring**: Live dashboard with `--monitor` flag
         | 
| 114 | 
            -
            -  | 
| 115 | 
            +
            - 🔌 **MCP Gateway**: Model Context Protocol integration for extensible tool capabilities
         | 
| 115 116 | 
             
            - 📁 **Multi-Project Support**: Per-session working directories
         | 
| 116 117 | 
             
            - 🔍 **Git Integration**: View diffs and track changes across projects
         | 
| 117 118 | 
             
            - 🎯 **Smart Task Orchestration**: PM agent intelligently routes work to specialists
         | 
| 119 | 
            +
            - ⚡ **50-80% Performance Improvement**: Through intelligent caching and lazy loading
         | 
| 120 | 
            +
            - 🔒 **Enhanced Security**: Comprehensive input validation and sanitization framework
         | 
| 118 121 |  | 
| 119 122 | 
             
            ## Quick Installation
         | 
| 120 123 |  | 
| @@ -133,46 +136,88 @@ claude-mpm | |
| 133 136 | 
             
            # Start with monitoring dashboard
         | 
| 134 137 | 
             
            claude-mpm run --monitor
         | 
| 135 138 |  | 
| 136 | 
            -
            #  | 
| 137 | 
            -
            claude-mpm  | 
| 139 | 
            +
            # Use MCP Gateway for external tool integration
         | 
| 140 | 
            +
            claude-mpm mcp
         | 
| 141 | 
            +
             | 
| 142 | 
            +
            # Manage memory for large conversation histories
         | 
| 143 | 
            +
            claude-mpm cleanup-memory
         | 
| 138 144 | 
             
            ```
         | 
| 139 145 |  | 
| 140 146 | 
             
            See [QUICKSTART.md](QUICKSTART.md) for complete usage examples.
         | 
| 141 147 |  | 
| 142 148 |  | 
| 143 | 
            -
            ## Architecture
         | 
| 149 | 
            +
            ## Architecture (v3.8.2+)
         | 
| 150 | 
            +
             | 
| 151 | 
            +
            Following the TSK-0053 refactoring, Claude MPM features:
         | 
| 144 152 |  | 
| 145 | 
            -
             | 
| 153 | 
            +
            - **Service-Oriented Architecture**: Five specialized service domains
         | 
| 154 | 
            +
            - **Interface-Based Contracts**: All services implement explicit interfaces
         | 
| 155 | 
            +
            - **Dependency Injection**: Service container with automatic resolution
         | 
| 156 | 
            +
            - **50-80% Performance Improvement**: Through lazy loading and intelligent caching
         | 
| 157 | 
            +
            - **Enhanced Security**: Comprehensive input validation and sanitization framework
         | 
| 146 158 |  | 
| 147 159 | 
             
            See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for detailed architecture information.
         | 
| 148 160 |  | 
| 149 161 | 
             
            ## Key Capabilities
         | 
| 150 162 |  | 
| 151 163 | 
             
            ### Multi-Agent Orchestration
         | 
| 152 | 
            -
             | 
| 164 | 
            +
             | 
| 165 | 
            +
            Claude MPM includes 15 specialized agents:
         | 
| 166 | 
            +
             | 
| 167 | 
            +
            #### Core Development
         | 
| 168 | 
            +
            - **Engineer** - Software development and implementation
         | 
| 169 | 
            +
            - **Research** - Code analysis and research  
         | 
| 170 | 
            +
            - **Documentation** - Documentation creation and maintenance
         | 
| 171 | 
            +
            - **QA** - Testing and quality assurance
         | 
| 172 | 
            +
            - **Security** - Security analysis and implementation
         | 
| 173 | 
            +
             | 
| 174 | 
            +
            #### Operations & Infrastructure
         | 
| 175 | 
            +
            - **Ops** - Operations and deployment
         | 
| 176 | 
            +
            - **Version Control** - Git and version management
         | 
| 177 | 
            +
            - **Data Engineer** - Data pipeline and ETL development
         | 
| 178 | 
            +
             | 
| 179 | 
            +
            #### Web Development
         | 
| 180 | 
            +
            - **Web UI** - Frontend and UI development
         | 
| 181 | 
            +
            - **Web QA** - Web testing and E2E validation
         | 
| 182 | 
            +
             | 
| 183 | 
            +
            #### Project Management
         | 
| 184 | 
            +
            - **Ticketing** - Issue tracking and management
         | 
| 185 | 
            +
            - **Project Organizer** - File organization and structure
         | 
| 186 | 
            +
            - **Memory Manager** - Project memory and context management
         | 
| 187 | 
            +
             | 
| 188 | 
            +
            #### Code Quality
         | 
| 189 | 
            +
            - **Refactoring Engineer** - Code refactoring and optimization
         | 
| 190 | 
            +
            - **Code Analyzer** - Static code analysis with AST and tree-sitter
         | 
| 153 191 |  | 
| 154 192 | 
             
            ### Agent Memory System
         | 
| 155 193 | 
             
            Agents learn project-specific patterns and remember insights across sessions. Initialize with `claude-mpm memory init`.
         | 
| 156 194 |  | 
| 157 | 
            -
            ###  | 
| 158 | 
            -
            **⚠️ Beta Feature** - Prevents memory-related crashes through intelligent monitoring and automatic restarts with state preservation.
         | 
| 195 | 
            +
            ### MCP Gateway (Model Context Protocol)
         | 
| 159 196 |  | 
| 160 | 
            -
             | 
| 161 | 
            -
             | 
| 162 | 
            -
             | 
| 197 | 
            +
            Claude MPM includes a powerful MCP Gateway that enables:
         | 
| 198 | 
            +
            - Integration with external tools and services
         | 
| 199 | 
            +
            - Custom tool development
         | 
| 200 | 
            +
            - Protocol-based communication
         | 
| 201 | 
            +
            - Extensible architecture
         | 
| 163 202 |  | 
| 164 | 
            -
             | 
| 165 | 
            -
            claude-mpm run-guarded --memory-threshold 16000 --accept-experimental  # 16GB
         | 
| 166 | 
            -
            ```
         | 
| 203 | 
            +
            See [MCP Gateway Documentation](docs/developer/13-mcp-gateway/README.md) for details.
         | 
| 167 204 |  | 
| 168 | 
            -
             | 
| 205 | 
            +
            ### Memory Management
         | 
| 169 206 |  | 
| 170 | 
            -
             | 
| 207 | 
            +
            Large conversation histories can consume 2GB+ of memory. Use the `cleanup-memory` command to manage Claude conversation history:
         | 
| 208 | 
            +
             | 
| 209 | 
            +
            ```bash
         | 
| 210 | 
            +
            # Clean up old conversation history
         | 
| 211 | 
            +
            claude-mpm cleanup-memory
         | 
| 212 | 
            +
             | 
| 213 | 
            +
            # Keep only recent conversations
         | 
| 214 | 
            +
            claude-mpm cleanup-memory --days 7
         | 
| 215 | 
            +
            ```
         | 
| 171 216 |  | 
| 172 217 | 
             
            ### Real-Time Monitoring
         | 
| 173 218 | 
             
            The `--monitor` flag opens a web dashboard showing live agent activity, file operations, and session management.
         | 
| 174 219 |  | 
| 175 | 
            -
            See [docs/MEMORY.md](docs/MEMORY.md) | 
| 220 | 
            +
            See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md](docs/developer/11-dashboard/README.md) for details.
         | 
| 176 221 |  | 
| 177 222 |  | 
| 178 223 | 
             
            ## Documentation
         | 
| @@ -182,15 +227,13 @@ See [docs/MEMORY.md](docs/MEMORY.md), [docs/USER_GUIDE_MEMORY_GUARDIAN.md](docs/ | |
| 182 227 | 
             
            - **[Installation Guide](docs/user/installation.md)** - Complete installation options
         | 
| 183 228 | 
             
            - **[User Guide](docs/user/)** - Detailed usage documentation
         | 
| 184 229 | 
             
            - **[Memory System](docs/MEMORY.md)** - Agent memory documentation
         | 
| 185 | 
            -
            - **[Memory Guardian Guide](docs/USER_GUIDE_MEMORY_GUARDIAN.md)** - Comprehensive memory protection documentation
         | 
| 186 230 | 
             
            - **[Troubleshooting](docs/user/troubleshooting.md)** - Common issues and solutions
         | 
| 187 231 |  | 
| 188 232 | 
             
            ### Developer Documentation
         | 
| 189 233 | 
             
            - **[Architecture Overview](docs/ARCHITECTURE.md)** - Service-oriented architecture and design
         | 
| 190 234 | 
             
            - **[API Reference](docs/api/)** - Complete API documentation with Sphinx
         | 
| 191 235 | 
             
            - **[Service Layer Guide](docs/developer/SERVICES.md)** - Service interfaces and implementations
         | 
| 192 | 
            -
            - **[ | 
| 193 | 
            -
            - **[Memory Guardian Configuration](docs/MEMORY_GUARDIAN_CONFIG.md)** - Complete configuration reference
         | 
| 236 | 
            +
            - **[MCP Gateway Guide](docs/developer/13-mcp-gateway/README.md)** - Model Context Protocol integration
         | 
| 194 237 | 
             
            - **[Performance Guide](docs/PERFORMANCE.md)** - Optimization and caching strategies
         | 
| 195 238 | 
             
            - **[Security Guide](docs/SECURITY.md)** - Security framework and best practices
         | 
| 196 239 | 
             
            - **[Testing Guide](docs/TESTING.md)** - Testing patterns and strategies
         | 
| @@ -210,9 +253,34 @@ See [CHANGELOG.md](CHANGELOG.md) for full history and [docs/MIGRATION.md](docs/M | |
| 210 253 |  | 
| 211 254 | 
             
            ## Development
         | 
| 212 255 |  | 
| 256 | 
            +
            ### Quick Development Setup
         | 
| 257 | 
            +
            ```bash
         | 
| 258 | 
            +
            # Complete development setup with code formatting and quality tools
         | 
| 259 | 
            +
            make dev-complete
         | 
| 260 | 
            +
             | 
| 261 | 
            +
            # Or step by step:
         | 
| 262 | 
            +
            make setup-dev          # Install in development mode
         | 
| 263 | 
            +
            make setup-pre-commit    # Set up automated code formatting
         | 
| 264 | 
            +
            ```
         | 
| 265 | 
            +
             | 
| 266 | 
            +
            ### Code Quality & Formatting
         | 
| 267 | 
            +
            The project uses automated code formatting and quality checks:
         | 
| 268 | 
            +
            - **Black** for code formatting
         | 
| 269 | 
            +
            - **isort** for import sorting
         | 
| 270 | 
            +
            - **flake8** for linting
         | 
| 271 | 
            +
            - **mypy** for type checking
         | 
| 272 | 
            +
            - **Pre-commit hooks** for automatic enforcement
         | 
| 273 | 
            +
             | 
| 274 | 
            +
            See [docs/developer/CODE_FORMATTING.md](docs/developer/CODE_FORMATTING.md) for details.
         | 
| 275 | 
            +
             | 
| 213 276 | 
             
            ### Contributing
         | 
| 214 277 | 
             
            Contributions are welcome! Please see our [project structure guide](docs/STRUCTURE.md) and follow the established patterns.
         | 
| 215 278 |  | 
| 279 | 
            +
            **Development Workflow**:
         | 
| 280 | 
            +
            1. Run `make dev-complete` to set up your environment
         | 
| 281 | 
            +
            2. Code formatting happens automatically on commit
         | 
| 282 | 
            +
            3. All code must pass quality checks before merging
         | 
| 283 | 
            +
             | 
| 216 284 | 
             
            ### Project Structure
         | 
| 217 285 | 
             
            See [docs/STRUCTURE.md](docs/STRUCTURE.md) for codebase organization.
         | 
| 218 286 |  |