claude-mpm 3.9.11__py3-none-any.whl → 4.0.3__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 +1 -1
- 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 +203 -81
- 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 +305 -197
- 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 +104 -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/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 +74 -70
- claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +106 -92
- 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 +120 -54
- 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 +223 -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 +145 -65
- 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 +170 -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.3.dist-info}/METADATA +27 -1
- claude_mpm-4.0.3.dist-info/RECORD +402 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.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.3.dist-info}/WHEEL +0 -0
- {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/top_level.txt +0 -0
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            from pathlib import Path
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            """
         | 
| 2 4 | 
             
            Agents section generator for framework CLAUDE.md.
         | 
| 3 5 |  | 
| @@ -5,13 +7,14 @@ This is the largest section generator, containing all agent definitions, | |
| 5 7 | 
             
            hierarchy, delegation patterns, and registry integration documentation.
         | 
| 6 8 | 
             
            """
         | 
| 7 9 |  | 
| 8 | 
            -
            from typing import  | 
| 10 | 
            +
            from typing import Any, Dict
         | 
| 11 | 
            +
             | 
| 9 12 | 
             
            from . import BaseSectionGenerator
         | 
| 10 13 |  | 
| 11 14 |  | 
| 12 15 | 
             
            class AgentsGenerator(BaseSectionGenerator):
         | 
| 13 16 | 
             
                """Generates the comprehensive Agents section."""
         | 
| 14 | 
            -
             | 
| 17 | 
            +
             | 
| 15 18 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 16 19 | 
             
                    """Generate the agents section."""
         | 
| 17 20 | 
             
                    return """
         | 
| @@ -251,7 +254,7 @@ TEMPORAL CONTEXT: Today is [current date]. Apply date awareness to: | |
| 251 254 | 
             
            **Dynamic Agent Selection Pattern:**
         | 
| 252 255 | 
             
            ```python
         | 
| 253 256 | 
             
            # Enhanced delegation with registry discovery
         | 
| 254 | 
            -
            registry =  | 
| 257 | 
            +
            registry = get_agent_registry()
         | 
| 255 258 |  | 
| 256 259 | 
             
            # Task-specific agent discovery
         | 
| 257 260 | 
             
            task_type = "performance_optimization"
         | 
| @@ -356,10 +359,10 @@ TEMPORAL CONTEXT: Today is [date]. Apply date awareness to data operations. | |
| 356 359 |  | 
| 357 360 | 
             
            **Comprehensive Agent Discovery API:**
         | 
| 358 361 | 
             
            ```python
         | 
| 359 | 
            -
            from  | 
| 362 | 
            +
            from claude_mpm.core.agent_registry import AgentRegistry
         | 
| 360 363 |  | 
| 361 364 | 
             
            # Initialize registry with directory precedence
         | 
| 362 | 
            -
            registry =  | 
| 365 | 
            +
            registry = get_agent_registry()
         | 
| 363 366 |  | 
| 364 367 | 
             
            # List all available agents with metadata
         | 
| 365 368 | 
             
            agents = registry.list_agents()
         | 
| @@ -400,7 +403,7 @@ $PWD/.claude-mpm/agents/user-agents/ | |
| 400 403 | 
             
            **Discovery Implementation:**
         | 
| 401 404 | 
             
            ```python
         | 
| 402 405 | 
             
            # Orchestrator pattern for agent discovery
         | 
| 403 | 
            -
            registry =  | 
| 406 | 
            +
            registry = get_agent_registry()
         | 
| 404 407 |  | 
| 405 408 | 
             
            # Discover all agents
         | 
| 406 409 | 
             
            all_agents = registry.list_agents()
         | 
| @@ -428,7 +431,7 @@ performance_agents = {k: v for k, v in all_agents.items() if 'performance' in v. | |
| 428 431 | 
             
            architecture_agents = {k: v for k, v in all_agents.items() if 'architecture' in v.get('specializations', [])}
         | 
| 429 432 |  | 
| 430 433 | 
             
            # Multi-specialization discovery
         | 
| 431 | 
            -
            multi_spec = {k: v for k, v in all_agents.items() | 
| 434 | 
            +
            multi_spec = {k: v for k, v in all_agents.items()
         | 
| 432 435 | 
             
                          if any(spec in v.get('specializations', []) for spec in ['integration', 'performance'])}
         | 
| 433 436 | 
             
            ```
         | 
| 434 437 |  | 
| @@ -437,13 +440,13 @@ multi_spec = {k: v for k, v in all_agents.items() | |
| 437 440 | 
             
            **Orchestrator Workflow with Modification Tracking:**
         | 
| 438 441 | 
             
            ```python
         | 
| 439 442 | 
             
            # Track agent changes for workflow optimization
         | 
| 440 | 
            -
            registry =  | 
| 443 | 
            +
            registry = get_agent_registry()
         | 
| 441 444 |  | 
| 442 445 | 
             
            # Get all agents (modification timestamps are included by default)
         | 
| 443 446 | 
             
            agents_with_tracking = registry.list_agents()
         | 
| 444 447 |  | 
| 445 448 | 
             
            # Filter agents modified since last orchestration manually
         | 
| 446 | 
            -
            recent_agents = {k: v for k, v in agents_with_tracking.items() | 
| 449 | 
            +
            recent_agents = {k: v for k, v in agents_with_tracking.items()
         | 
| 447 450 | 
             
                             if v.get('last_modified', 0) > since_timestamp}
         | 
| 448 451 |  | 
| 449 452 | 
             
            # Update orchestration based on agent modifications
         | 
| @@ -457,7 +460,7 @@ for agent_id, metadata in recent_agents.items(): | |
| 457 460 |  | 
| 458 461 | 
             
            **99.7% Performance Improvement Integration:**
         | 
| 459 462 | 
             
            ```python
         | 
| 460 | 
            -
            from  | 
| 463 | 
            +
            from claude_mpm.services.shared_prompt_cache import SharedPromptCache
         | 
| 461 464 |  | 
| 462 465 | 
             
            # Initialize registry with caching
         | 
| 463 466 | 
             
            cache = SharedPromptCache()
         | 
| @@ -483,18 +486,18 @@ for agent_id in ['researcher', 'security', 'ops']: | |
| 483 486 | 
             
            ```python
         | 
| 484 487 | 
             
            # Example: Dynamic agent selection based on task requirements
         | 
| 485 488 | 
             
            def select_optimal_agent(task_type, specialization_requirements):
         | 
| 486 | 
            -
                registry =  | 
| 487 | 
            -
             | 
| 489 | 
            +
                registry = get_agent_registry()
         | 
| 490 | 
            +
             | 
| 488 491 | 
             
                # Find agents matching requirements
         | 
| 489 492 | 
             
                all_agents = registry.list_agents()
         | 
| 490 | 
            -
                matching_agents = {k: v for k, v in all_agents.items() | 
| 491 | 
            -
                                   if any(spec in v.get('specializations', []) | 
| 493 | 
            +
                matching_agents = {k: v for k, v in all_agents.items()
         | 
| 494 | 
            +
                                   if any(spec in v.get('specializations', [])
         | 
| 492 495 | 
             
                                         for spec in specialization_requirements)}
         | 
| 493 | 
            -
             | 
| 496 | 
            +
             | 
| 494 497 | 
             
                # Select highest precedence agent
         | 
| 495 498 | 
             
                if matching_agents:
         | 
| 496 499 | 
             
                    return registry.selectOptimalAgent(matching_agents, task_type)
         | 
| 497 | 
            -
             | 
| 500 | 
            +
             | 
| 498 501 | 
             
                # Fallback to core agents
         | 
| 499 502 | 
             
                return registry.getCoreAgent(task_type)
         | 
| 500 503 |  | 
| @@ -517,7 +520,7 @@ optimal_agent = select_optimal_agent( | |
| 517 520 |  | 
| 518 521 | 
             
            TEMPORAL CONTEXT: Today is [date]. Using agent registry for optimal agent selection.
         | 
| 519 522 |  | 
| 520 | 
            -
            **Agent Discovery**: | 
| 523 | 
            +
            **Agent Discovery**:
         | 
| 521 524 | 
             
            - Registry scan: Find agents with specialization {required_spec}
         | 
| 522 525 | 
             
            - Selected agent: {optimal_agent_id} (precedence: {agent_precedence})
         | 
| 523 526 | 
             
            - Capabilities: {agent_metadata['specializations']}
         | 
| @@ -559,18 +562,18 @@ TEMPORAL CONTEXT: Today is [date]. Using agent registry for optimal agent select | |
| 559 562 | 
             
            ```python
         | 
| 560 563 | 
             
            # Enhanced orchestration with registry integration
         | 
| 561 564 | 
             
            def orchestrate_with_registry(task_description, requirements):
         | 
| 562 | 
            -
                registry =  | 
| 563 | 
            -
             | 
| 565 | 
            +
                registry = get_agent_registry()
         | 
| 566 | 
            +
             | 
| 564 567 | 
             
                # Discover optimal agents
         | 
| 565 568 | 
             
                all_agents = registry.list_agents()
         | 
| 566 569 | 
             
                # Filter by requirements
         | 
| 567 570 | 
             
                agents = {k: v for k, v in all_agents.items()
         | 
| 568 571 | 
             
                          if any(spec in v.get('specializations', [])
         | 
| 569 572 | 
             
                                for spec in requirements.get('specializations', []))}
         | 
| 570 | 
            -
             | 
| 573 | 
            +
             | 
| 571 574 | 
             
                # Create Task Tool subprocess with optimal agent
         | 
| 572 575 | 
             
                selected_agent = registry.selectOptimalAgent(agents, task_description)
         | 
| 573 | 
            -
             | 
| 576 | 
            +
             | 
| 574 577 | 
             
                return create_task_tool_subprocess(
         | 
| 575 578 | 
             
                    agent=selected_agent,
         | 
| 576 579 | 
             
                    task=task_description,
         | 
| @@ -579,4 +582,4 @@ def orchestrate_with_registry(task_description, requirements): | |
| 579 582 | 
             
                )
         | 
| 580 583 | 
             
            ```
         | 
| 581 584 |  | 
| 582 | 
            -
            ---"""
         | 
| 585 | 
            +
            ---"""
         | 
| @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Claude-PM Init section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class ClaudePmInitGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Claude-PM Init section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the claude-pm init section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -43,22 +44,22 @@ claude-pm init --verify | |
| 43 44 |  | 
| 44 45 | 
             
            3. **MANDATORY: Core System Health Check**:
         | 
| 45 46 | 
             
               ```bash
         | 
| 46 | 
            -
               python -c "from  | 
| 47 | 
            +
               python -c "from claude_mpm.core import validate_core_system; validate_core_system()"
         | 
| 47 48 | 
             
               ```
         | 
| 48 49 |  | 
| 49 50 | 
             
            4. **MANDATORY: Agent Registry Health Check**:
         | 
| 50 51 | 
             
               ```bash
         | 
| 51 | 
            -
               python -c "from  | 
| 52 | 
            +
               python -c "from claude_mpm.core.agent_registry import AgentRegistry; registry = get_agent_registry(); print(f'Registry health: {registry.health_check()}')"
         | 
| 52 53 | 
             
               ```
         | 
| 53 54 |  | 
| 54 55 | 
             
            5. **MANDATORY: Initialize Core Agents with Registry Discovery**:
         | 
| 55 56 | 
             
               ```
         | 
| 56 57 | 
             
               Agent Registry: Discover available agents and build capability mapping across all directories
         | 
| 57 | 
            -
             | 
| 58 | 
            +
             | 
| 58 59 | 
             
               Documentation Agent: Scan project documentation patterns and build operational understanding.
         | 
| 59 | 
            -
             | 
| 60 | 
            +
             | 
| 60 61 | 
             
               Version Control Agent: Confirm availability and provide Git status summary.
         | 
| 61 | 
            -
             | 
| 62 | 
            +
             | 
| 62 63 | 
             
               Data Engineer Agent: Verify data store connectivity and AI API availability.
         | 
| 63 64 | 
             
               ```
         | 
| 64 65 |  | 
| @@ -88,10 +89,9 @@ claude-pm init --verify | |
| 88 89 | 
             
            **Framework Health Monitoring:**
         | 
| 89 90 | 
             
            ```bash
         | 
| 90 91 | 
             
            # Check framework protection status
         | 
| 91 | 
            -
            python -c "from  | 
| 92 | 
            +
            python -c "from claude_mpm.services.health_monitor import HealthMonitor; HealthMonitor().check_framework_health()"
         | 
| 92 93 |  | 
| 93 94 | 
             
            # Validate agent hierarchy
         | 
| 94 95 | 
             
            claude-pm init --verify
         | 
| 95 96 |  | 
| 96 | 
            -
             | 
| 97 | 
            -
            ---"""
         | 
| 97 | 
            +
            ---"""
         | 
    
        claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py
    CHANGED
    
    | @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Core responsibilities section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class CoreResponsibilitiesGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Core Responsibilities section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the core responsibilities section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -24,4 +25,4 @@ class CoreResponsibilitiesGenerator(BaseSectionGenerator): | |
| 24 25 | 
             
            9. **Precedence-Aware Delegation**: Respect directory precedence (project → user → system) when selecting agents
         | 
| 25 26 | 
             
            10. **Temporal Context Integration**: Apply current date awareness to sprint planning, release scheduling, and priority assessment
         | 
| 26 27 | 
             
            11. **Operation Tracking**: Ensure ALL agents provide operational insights and project patterns
         | 
| 27 | 
            -
            12. **Agent Modification Tracking**: Monitor agent changes and adapt orchestration patterns accordingly"""
         | 
| 28 | 
            +
            12. **Agent Modification Tracking**: Monitor agent changes and adapt orchestration patterns accordingly"""
         | 
    
        claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py
    CHANGED
    
    | @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Delegation constraints section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class DelegationConstraintsGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Critical Delegation Constraints section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the delegation constraints section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -20,4 +21,4 @@ class DelegationConstraintsGenerator(BaseSectionGenerator): | |
| 20 21 | 
             
            - **Configuration**: NEVER modify config files - delegate to Ops Agent
         | 
| 21 22 | 
             
            - **Testing**: NEVER write tests - delegate to QA Agent
         | 
| 22 23 | 
             
            - **Documentation Operations**: ALL documentation tasks must be delegated to Documentation Agent
         | 
| 23 | 
            -
            - **Ticket Operations**: ALL ticket operations must be delegated to Ticketing Agent"""
         | 
| 24 | 
            +
            - **Ticket Operations**: ALL ticket operations must be delegated to Ticketing Agent"""
         | 
| @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Environment configuration section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class EnvironmentConfigGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Environment Configuration section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the environment configuration section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -20,4 +21,4 @@ class EnvironmentConfigGenerator(BaseSectionGenerator): | |
| 20 21 | 
             
            - **Framework Import**: `import claude_pm`
         | 
| 21 22 |  | 
| 22 23 | 
             
            ### Platform-Specific Notes
         | 
| 23 | 
            -
            {{PLATFORM_NOTES}}"""
         | 
| 24 | 
            +
            {{PLATFORM_NOTES}}"""
         | 
| @@ -2,19 +2,20 @@ | |
| 2 2 | 
             
            Footer section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class FooterGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the footer section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the footer section."""
         | 
| 14 | 
            -
                    deployment_id = data.get( | 
| 15 | 
            +
                    deployment_id = data.get("deployment_id", "{{DEPLOYMENT_ID}}")
         | 
| 15 16 | 
             
                    timestamp = self.get_timestamp()
         | 
| 16 | 
            -
             | 
| 17 | 
            +
             | 
| 17 18 | 
             
                    return f"""
         | 
| 18 19 | 
             
            **Framework Version**: {self.framework_version}
         | 
| 19 20 | 
             
            **Deployment ID**: {deployment_id}
         | 
| 20 | 
            -
            **Last Updated**: {timestamp}"""
         | 
| 21 | 
            +
            **Last Updated**: {timestamp}"""
         | 
| @@ -2,25 +2,26 @@ | |
| 2 2 | 
             
            Header section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class HeaderGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the header section with version metadata."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the header section."""
         | 
| 14 | 
            -
                    version = data.get( | 
| 15 | 
            +
                    version = data.get("version", f"{self.framework_version}-001")
         | 
| 15 16 | 
             
                    timestamp = self.get_timestamp()
         | 
| 16 | 
            -
                    content_hash = data.get( | 
| 17 | 
            -
             | 
| 17 | 
            +
                    content_hash = data.get("content_hash", "pending")
         | 
| 18 | 
            +
             | 
| 18 19 | 
             
                    return f"""# Claude PM Framework Configuration - Deployment
         | 
| 19 20 |  | 
| 20 | 
            -
            <!-- | 
| 21 | 
            +
            <!--
         | 
| 21 22 | 
             
            CLAUDE_MD_VERSION: {version}
         | 
| 22 23 | 
             
            FRAMEWORK_VERSION: {self.framework_version}
         | 
| 23 24 | 
             
            DEPLOYMENT_DATE: {timestamp}
         | 
| 24 25 | 
             
            LAST_UPDATED: {timestamp}
         | 
| 25 26 | 
             
            CONTENT_HASH: {content_hash}
         | 
| 26 | 
            -
            -->"""
         | 
| 27 | 
            +
            -->"""
         | 
    
        claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py
    CHANGED
    
    | @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Orchestration principles section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class OrchestrationPrinciplesGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Core Orchestration Principles section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the orchestration principles section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -27,4 +28,4 @@ class OrchestrationPrinciplesGenerator(BaseSectionGenerator): | |
| 27 28 | 
             
            11. **Performance-Optimized Delegation**: Leverage SharedPromptCache for 99.7% faster agent loading and orchestration
         | 
| 28 29 | 
             
            12. **Specialization-Based Routing**: Route tasks to agents with appropriate specializations beyond core 9 types using registry discovery
         | 
| 29 30 |  | 
| 30 | 
            -
            ---"""
         | 
| 31 | 
            +
            ---"""
         | 
| @@ -2,17 +2,18 @@ | |
| 2 2 | 
             
            Role designation section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class RoleDesignationGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the AI Assistant Role Designation section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the role designation section."""
         | 
| 14 | 
            -
                    deployment_date = data.get( | 
| 15 | 
            -
             | 
| 15 | 
            +
                    deployment_date = data.get("deployment_date", self.get_timestamp())
         | 
| 16 | 
            +
             | 
| 16 17 | 
             
                    return f"""
         | 
| 17 18 | 
             
            ## 🤖 AI ASSISTANT ROLE DESIGNATION
         | 
| 18 19 |  | 
| @@ -34,4 +35,4 @@ Your primary role is operating as a multi-agent orchestrator. Your job is to orc | |
| 34 35 | 
             
            - **Core System**: 🔧 Framework orchestration and agent coordination
         | 
| 35 36 | 
             
            - **Performance**: ⚡ <15 second health monitoring (77% improvement)
         | 
| 36 37 |  | 
| 37 | 
            -
            ---"""
         | 
| 38 | 
            +
            ---"""
         | 
    
        claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py
    CHANGED
    
    | @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Subprocess validation section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class SubprocessValidationGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Subprocess Validation Protocol section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the subprocess validation section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -35,13 +36,13 @@ class SubprocessValidationGenerator(BaseSectionGenerator): | |
| 35 36 | 
             
               # MANDATORY: Test actual CLI commands, not just code existence
         | 
| 36 37 | 
             
               claude-pm --version    # Verify actual version numbers
         | 
| 37 38 | 
             
               claude-pm init         # Test real initialization
         | 
| 38 | 
            -
               python3 -c "import  | 
| 39 | 
            +
               python3 -c "import claude_mpm; print(claude_mpm.__version__)"  # Verify imports
         | 
| 39 40 | 
             
               ```
         | 
| 40 41 |  | 
| 41 42 | 
             
            2. **🚨 REAL IMPORT VALIDATION** - NEVER trust subprocess claims about imports:
         | 
| 42 43 | 
             
               ```bash
         | 
| 43 44 | 
             
               # MANDATORY: Test actual imports that will be used
         | 
| 44 | 
            -
               python3 -c "from  | 
| 45 | 
            +
               python3 -c "from claude_mpm.services.core import unified_core_service"
         | 
| 45 46 | 
             
               python3 -c "import asyncio; asyncio.run(test_function())"
         | 
| 46 47 | 
             
               ```
         | 
| 47 48 |  | 
| @@ -96,16 +97,16 @@ claude-pm --version | |
| 96 97 | 
             
            claude-pm --help
         | 
| 97 98 |  | 
| 98 99 | 
             
            # Test actual imports
         | 
| 99 | 
            -
            python3 -c "import  | 
| 100 | 
            -
            python3 -c "from  | 
| 100 | 
            +
            python3 -c "import claude_mpm; print('✅ Basic import works')"
         | 
| 101 | 
            +
            python3 -c "from claude_mpm.services.core import [specific_function]; print('✅ Specific import works')"
         | 
| 101 102 |  | 
| 102 103 | 
             
            # Test version consistency
         | 
| 103 104 | 
             
            echo "📋 VERSION VERIFICATION:"
         | 
| 104 105 | 
             
            echo "Package.json: $(grep '"version"' package.json)"
         | 
| 105 106 | 
             
            echo "CLI Output: $(claude-pm --version 2>/dev/null || echo 'CLI FAILED')"
         | 
| 106 | 
            -
            echo "Python Module: $(python3 -c 'import  | 
| 107 | 
            +
            echo "Python Module: $(python3 -c 'import claude_mpm; print(claude_mpm.__version__)' 2>/dev/null || echo 'IMPORT FAILED')"
         | 
| 107 108 |  | 
| 108 109 | 
             
            # If ANY of the above fail, IMMEDIATELY inform user and fix issues
         | 
| 109 110 | 
             
            ```
         | 
| 110 111 |  | 
| 111 | 
            -
            ---"""
         | 
| 112 | 
            +
            ---"""
         | 
| @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Todo and Task Tools section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class TodoTaskToolsGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Todo and Task Tools section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the todo and task tools section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -107,4 +108,4 @@ Task(description="Apply semantic version bump and create release tags", subagent | |
| 107 108 | 
             
            # Update TodoWrite status based on agent completions
         | 
| 108 109 | 
             
            ```
         | 
| 109 110 |  | 
| 110 | 
            -
            ---"""
         | 
| 111 | 
            +
            ---"""
         | 
| @@ -2,13 +2,14 @@ | |
| 2 2 | 
             
            Troubleshooting section generator for framework CLAUDE.md.
         | 
| 3 3 | 
             
            """
         | 
| 4 4 |  | 
| 5 | 
            -
            from typing import  | 
| 5 | 
            +
            from typing import Any, Dict
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            from . import BaseSectionGenerator
         | 
| 7 8 |  | 
| 8 9 |  | 
| 9 10 | 
             
            class TroubleshootingGenerator(BaseSectionGenerator):
         | 
| 10 11 | 
             
                """Generates the Troubleshooting section."""
         | 
| 11 | 
            -
             | 
| 12 | 
            +
             | 
| 12 13 | 
             
                def generate(self, data: Dict[str, Any]) -> str:
         | 
| 13 14 | 
             
                    """Generate the troubleshooting section."""
         | 
| 14 15 | 
             
                    return """
         | 
| @@ -30,10 +31,10 @@ class TroubleshootingGenerator(BaseSectionGenerator): | |
| 30 31 | 
             
            9. **Core System Performance Issues**: Implement system optimization
         | 
| 31 32 |  | 
| 32 33 | 
             
            ### Agent Registry Issues
         | 
| 33 | 
            -
            10. **Agent Registry Discovery Failures**: Run `python -c "from  | 
| 34 | 
            +
            10. **Agent Registry Discovery Failures**: Run `python -c "from claude_mpm.core.agent_registry import AgentRegistry; get_agent_registry().health_check()"`
         | 
| 34 35 | 
             
            11. **Agent Precedence Problems**: Verify directory structure with `claude-pm init --verify`
         | 
| 35 36 | 
             
            12. **Specialization Discovery Issues**: Check agent metadata and specialization tags
         | 
| 36 37 | 
             
            13. **Performance Cache Problems**: Clear SharedPromptCache and reinitialize registry
         | 
| 37 38 | 
             
            14. **Agent Modification Tracking Errors**: Verify agent file permissions and timestamps
         | 
| 38 39 | 
             
            15. **Custom Agent Loading Issues**: Verify user-agents directory structure and agent file format
         | 
| 39 | 
            -
            16. **Directory Precedence Problems**: Check user-agents directory hierarchy and parent directory traversal"""
         | 
| 40 | 
            +
            16. **Directory Precedence Problems**: Check user-agents directory hierarchy and parent directory traversal"""
         | 
| @@ -4,63 +4,64 @@ Section management for framework CLAUDE.md templates. | |
| 4 4 | 
             
            Manages section registration, ordering, and updates.
         | 
| 5 5 | 
             
            """
         | 
| 6 6 |  | 
| 7 | 
            -
            from typing import Dict, List, Optional, Callable, Any
         | 
| 8 7 | 
             
            from collections import OrderedDict
         | 
| 8 | 
            +
            from typing import Any, Callable, Dict, List, Optional
         | 
| 9 9 |  | 
| 10 10 |  | 
| 11 11 | 
             
            class SectionManager:
         | 
| 12 12 | 
             
                """Manages sections for framework CLAUDE.md generation."""
         | 
| 13 | 
            -
             | 
| 13 | 
            +
             | 
| 14 14 | 
             
                def __init__(self):
         | 
| 15 15 | 
             
                    """Initialize section manager."""
         | 
| 16 16 | 
             
                    self.sections = OrderedDict()
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                def register_section( | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 17 | 
            +
             | 
| 18 | 
            +
                def register_section(
         | 
| 19 | 
            +
                    self,
         | 
| 20 | 
            +
                    name: str,
         | 
| 21 | 
            +
                    generator: Callable[[Dict[str, Any]], str],
         | 
| 22 | 
            +
                    data: Optional[Dict[str, Any]] = None,
         | 
| 23 | 
            +
                ):
         | 
| 22 24 | 
             
                    """
         | 
| 23 25 | 
             
                    Register a section generator.
         | 
| 24 | 
            -
             | 
| 26 | 
            +
             | 
| 25 27 | 
             
                    Args:
         | 
| 26 28 | 
             
                        name: Section name
         | 
| 27 29 | 
             
                        generator: Function that generates section content
         | 
| 28 30 | 
             
                        data: Optional data to pass to generator
         | 
| 29 31 | 
             
                    """
         | 
| 30 32 | 
             
                    self.sections[name] = (generator, data or {})
         | 
| 31 | 
            -
             | 
| 33 | 
            +
             | 
| 32 34 | 
             
                def update_section(self, section_name: str, content: str) -> bool:
         | 
| 33 35 | 
             
                    """
         | 
| 34 36 | 
             
                    Update a specific section's generator to return custom content.
         | 
| 35 | 
            -
             | 
| 37 | 
            +
             | 
| 36 38 | 
             
                    Args:
         | 
| 37 39 | 
             
                        section_name: Name of section to update
         | 
| 38 40 | 
             
                        content: New content for the section
         | 
| 39 | 
            -
             | 
| 41 | 
            +
             | 
| 40 42 | 
             
                    Returns:
         | 
| 41 43 | 
             
                        bool: Success status
         | 
| 42 44 | 
             
                    """
         | 
| 43 45 | 
             
                    if section_name not in self.sections:
         | 
| 44 46 | 
             
                        return False
         | 
| 45 | 
            -
             | 
| 47 | 
            +
             | 
| 46 48 | 
             
                    # Create a lambda that returns the custom content
         | 
| 47 49 | 
             
                    self.sections[section_name] = (lambda data: content, {})
         | 
| 48 50 | 
             
                    return True
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                def add_custom_section( | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
                                      after: Optional[str] = None):
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                def add_custom_section(
         | 
| 53 | 
            +
                    self, section_name: str, content: str, after: Optional[str] = None
         | 
| 54 | 
            +
                ):
         | 
| 54 55 | 
             
                    """
         | 
| 55 56 | 
             
                    Add a custom section to the generator.
         | 
| 56 | 
            -
             | 
| 57 | 
            +
             | 
| 57 58 | 
             
                    Args:
         | 
| 58 59 | 
             
                        section_name: Name for the new section
         | 
| 59 60 | 
             
                        content: Content for the section
         | 
| 60 61 | 
             
                        after: Section name to insert after (None = append at end)
         | 
| 61 62 | 
             
                    """
         | 
| 62 63 | 
             
                    new_section = (lambda data: content, {})
         | 
| 63 | 
            -
             | 
| 64 | 
            +
             | 
| 64 65 | 
             
                    if after is None or after not in self.sections:
         | 
| 65 66 | 
             
                        self.sections[section_name] = new_section
         | 
| 66 67 | 
             
                    else:
         | 
| @@ -71,36 +72,36 @@ class SectionManager: | |
| 71 72 | 
             
                            if key == after:
         | 
| 72 73 | 
             
                                new_sections[section_name] = new_section
         | 
| 73 74 | 
             
                        self.sections = new_sections
         | 
| 74 | 
            -
             | 
| 75 | 
            +
             | 
| 75 76 | 
             
                def get_section_list(self) -> List[str]:
         | 
| 76 77 | 
             
                    """
         | 
| 77 78 | 
             
                    Get list of all section names in order.
         | 
| 78 | 
            -
             | 
| 79 | 
            +
             | 
| 79 80 | 
             
                    Returns:
         | 
| 80 81 | 
             
                        List of section names
         | 
| 81 82 | 
             
                    """
         | 
| 82 83 | 
             
                    return list(self.sections.keys())
         | 
| 83 | 
            -
             | 
| 84 | 
            +
             | 
| 84 85 | 
             
                def get_sections(self) -> OrderedDict:
         | 
| 85 86 | 
             
                    """
         | 
| 86 87 | 
             
                    Get all sections.
         | 
| 87 | 
            -
             | 
| 88 | 
            +
             | 
| 88 89 | 
             
                    Returns:
         | 
| 89 90 | 
             
                        OrderedDict of section definitions
         | 
| 90 91 | 
             
                    """
         | 
| 91 92 | 
             
                    return self.sections
         | 
| 92 | 
            -
             | 
| 93 | 
            +
             | 
| 93 94 | 
             
                def remove_section(self, section_name: str) -> bool:
         | 
| 94 95 | 
             
                    """
         | 
| 95 96 | 
             
                    Remove a section.
         | 
| 96 | 
            -
             | 
| 97 | 
            +
             | 
| 97 98 | 
             
                    Args:
         | 
| 98 99 | 
             
                        section_name: Name of section to remove
         | 
| 99 | 
            -
             | 
| 100 | 
            +
             | 
| 100 101 | 
             
                    Returns:
         | 
| 101 102 | 
             
                        bool: Success status
         | 
| 102 103 | 
             
                    """
         | 
| 103 104 | 
             
                    if section_name in self.sections:
         | 
| 104 105 | 
             
                        del self.sections[section_name]
         | 
| 105 106 | 
             
                        return True
         | 
| 106 | 
            -
                    return False
         | 
| 107 | 
            +
                    return False
         |