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
| @@ -8,18 +8,19 @@ establishing contracts for dependency injection and service orchestration. | |
| 8 8 | 
             
            Part of ISS-0034: Infrastructure Setup - MCP Gateway Project Foundation
         | 
| 9 9 | 
             
            """
         | 
| 10 10 |  | 
| 11 | 
            +
            import asyncio
         | 
| 11 12 | 
             
            from abc import ABC, abstractmethod
         | 
| 12 | 
            -
            from typing import Any, Dict, List, Optional, Callable, Union
         | 
| 13 13 | 
             
            from dataclasses import dataclass
         | 
| 14 14 | 
             
            from datetime import datetime
         | 
| 15 15 | 
             
            from pathlib import Path
         | 
| 16 | 
            -
            import  | 
| 16 | 
            +
            from typing import Any, Callable, Dict, List, Optional, Union
         | 
| 17 17 |  | 
| 18 18 |  | 
| 19 19 | 
             
            # Tool-related data structures
         | 
| 20 20 | 
             
            @dataclass
         | 
| 21 21 | 
             
            class MCPToolDefinition:
         | 
| 22 22 | 
             
                """Definition of an MCP tool."""
         | 
| 23 | 
            +
             | 
| 23 24 | 
             
                name: str
         | 
| 24 25 | 
             
                description: str
         | 
| 25 26 | 
             
                input_schema: Dict[str, Any]
         | 
| @@ -31,6 +32,7 @@ class MCPToolDefinition: | |
| 31 32 | 
             
            @dataclass
         | 
| 32 33 | 
             
            class MCPToolInvocation:
         | 
| 33 34 | 
             
                """Represents a tool invocation request."""
         | 
| 35 | 
            +
             | 
| 34 36 | 
             
                tool_name: str
         | 
| 35 37 | 
             
                parameters: Dict[str, Any]
         | 
| 36 38 | 
             
                context: Optional[Dict[str, Any]] = None
         | 
| @@ -41,6 +43,7 @@ class MCPToolInvocation: | |
| 41 43 | 
             
            @dataclass
         | 
| 42 44 | 
             
            class MCPToolResult:
         | 
| 43 45 | 
             
                """Result from a tool invocation."""
         | 
| 46 | 
            +
             | 
| 44 47 | 
             
                success: bool
         | 
| 45 48 | 
             
                data: Optional[Any] = None
         | 
| 46 49 | 
             
                error: Optional[str] = None
         | 
| @@ -52,73 +55,73 @@ class MCPToolResult: | |
| 52 55 | 
             
            class IMCPConfiguration(ABC):
         | 
| 53 56 | 
             
                """
         | 
| 54 57 | 
             
                Interface for MCP configuration management.
         | 
| 55 | 
            -
             | 
| 58 | 
            +
             | 
| 56 59 | 
             
                Handles loading, validation, and access to MCP Gateway configuration.
         | 
| 57 60 | 
             
                """
         | 
| 58 | 
            -
             | 
| 61 | 
            +
             | 
| 59 62 | 
             
                @abstractmethod
         | 
| 60 63 | 
             
                def load_config(self, config_path: Path) -> bool:
         | 
| 61 64 | 
             
                    """
         | 
| 62 65 | 
             
                    Load configuration from a file.
         | 
| 63 | 
            -
             | 
| 66 | 
            +
             | 
| 64 67 | 
             
                    Args:
         | 
| 65 68 | 
             
                        config_path: Path to configuration file
         | 
| 66 | 
            -
             | 
| 69 | 
            +
             | 
| 67 70 | 
             
                    Returns:
         | 
| 68 71 | 
             
                        True if configuration loaded successfully
         | 
| 69 72 | 
             
                    """
         | 
| 70 73 | 
             
                    pass
         | 
| 71 | 
            -
             | 
| 74 | 
            +
             | 
| 72 75 | 
             
                @abstractmethod
         | 
| 73 76 | 
             
                def get(self, key: str, default: Any = None) -> Any:
         | 
| 74 77 | 
             
                    """
         | 
| 75 78 | 
             
                    Get configuration value by key.
         | 
| 76 | 
            -
             | 
| 79 | 
            +
             | 
| 77 80 | 
             
                    Args:
         | 
| 78 81 | 
             
                        key: Configuration key (supports dot notation)
         | 
| 79 82 | 
             
                        default: Default value if key not found
         | 
| 80 | 
            -
             | 
| 83 | 
            +
             | 
| 81 84 | 
             
                    Returns:
         | 
| 82 85 | 
             
                        Configuration value or default
         | 
| 83 86 | 
             
                    """
         | 
| 84 87 | 
             
                    pass
         | 
| 85 | 
            -
             | 
| 88 | 
            +
             | 
| 86 89 | 
             
                @abstractmethod
         | 
| 87 90 | 
             
                def set(self, key: str, value: Any) -> None:
         | 
| 88 91 | 
             
                    """
         | 
| 89 92 | 
             
                    Set configuration value.
         | 
| 90 | 
            -
             | 
| 93 | 
            +
             | 
| 91 94 | 
             
                    Args:
         | 
| 92 95 | 
             
                        key: Configuration key (supports dot notation)
         | 
| 93 96 | 
             
                        value: Configuration value
         | 
| 94 97 | 
             
                    """
         | 
| 95 98 | 
             
                    pass
         | 
| 96 | 
            -
             | 
| 99 | 
            +
             | 
| 97 100 | 
             
                @abstractmethod
         | 
| 98 101 | 
             
                def validate(self) -> bool:
         | 
| 99 102 | 
             
                    """
         | 
| 100 103 | 
             
                    Validate the current configuration.
         | 
| 101 | 
            -
             | 
| 104 | 
            +
             | 
| 102 105 | 
             
                    Returns:
         | 
| 103 106 | 
             
                        True if configuration is valid
         | 
| 104 107 | 
             
                    """
         | 
| 105 108 | 
             
                    pass
         | 
| 106 | 
            -
             | 
| 109 | 
            +
             | 
| 107 110 | 
             
                @abstractmethod
         | 
| 108 111 | 
             
                def get_server_config(self) -> Dict[str, Any]:
         | 
| 109 112 | 
             
                    """
         | 
| 110 113 | 
             
                    Get MCP server configuration.
         | 
| 111 | 
            -
             | 
| 114 | 
            +
             | 
| 112 115 | 
             
                    Returns:
         | 
| 113 116 | 
             
                        Server configuration dictionary
         | 
| 114 117 | 
             
                    """
         | 
| 115 118 | 
             
                    pass
         | 
| 116 | 
            -
             | 
| 119 | 
            +
             | 
| 117 120 | 
             
                @abstractmethod
         | 
| 118 121 | 
             
                def get_tools_config(self) -> Dict[str, Any]:
         | 
| 119 122 | 
             
                    """
         | 
| 120 123 | 
             
                    Get tools configuration.
         | 
| 121 | 
            -
             | 
| 124 | 
            +
             | 
| 122 125 | 
             
                    Returns:
         | 
| 123 126 | 
             
                        Tools configuration dictionary
         | 
| 124 127 | 
             
                    """
         | 
| @@ -128,56 +131,56 @@ class IMCPConfiguration(ABC): | |
| 128 131 | 
             
            class IMCPToolAdapter(ABC):
         | 
| 129 132 | 
             
                """
         | 
| 130 133 | 
             
                Interface for MCP tool adapters.
         | 
| 131 | 
            -
             | 
| 134 | 
            +
             | 
| 132 135 | 
             
                Tool adapters wrap external tools to make them MCP-compatible.
         | 
| 133 136 | 
             
                """
         | 
| 134 | 
            -
             | 
| 137 | 
            +
             | 
| 135 138 | 
             
                @abstractmethod
         | 
| 136 139 | 
             
                def get_definition(self) -> MCPToolDefinition:
         | 
| 137 140 | 
             
                    """
         | 
| 138 141 | 
             
                    Get the tool definition.
         | 
| 139 | 
            -
             | 
| 142 | 
            +
             | 
| 140 143 | 
             
                    Returns:
         | 
| 141 144 | 
             
                        Tool definition with schema and metadata
         | 
| 142 145 | 
             
                    """
         | 
| 143 146 | 
             
                    pass
         | 
| 144 | 
            -
             | 
| 147 | 
            +
             | 
| 145 148 | 
             
                @abstractmethod
         | 
| 146 149 | 
             
                async def invoke(self, invocation: MCPToolInvocation) -> MCPToolResult:
         | 
| 147 150 | 
             
                    """
         | 
| 148 151 | 
             
                    Invoke the tool with given parameters.
         | 
| 149 | 
            -
             | 
| 152 | 
            +
             | 
| 150 153 | 
             
                    Args:
         | 
| 151 154 | 
             
                        invocation: Tool invocation request
         | 
| 152 | 
            -
             | 
| 155 | 
            +
             | 
| 153 156 | 
             
                    Returns:
         | 
| 154 157 | 
             
                        Tool execution result
         | 
| 155 158 | 
             
                    """
         | 
| 156 159 | 
             
                    pass
         | 
| 157 | 
            -
             | 
| 160 | 
            +
             | 
| 158 161 | 
             
                @abstractmethod
         | 
| 159 162 | 
             
                def validate_parameters(self, parameters: Dict[str, Any]) -> bool:
         | 
| 160 163 | 
             
                    """
         | 
| 161 164 | 
             
                    Validate tool parameters against schema.
         | 
| 162 | 
            -
             | 
| 165 | 
            +
             | 
| 163 166 | 
             
                    Args:
         | 
| 164 167 | 
             
                        parameters: Parameters to validate
         | 
| 165 | 
            -
             | 
| 168 | 
            +
             | 
| 166 169 | 
             
                    Returns:
         | 
| 167 170 | 
             
                        True if parameters are valid
         | 
| 168 171 | 
             
                    """
         | 
| 169 172 | 
             
                    pass
         | 
| 170 | 
            -
             | 
| 173 | 
            +
             | 
| 171 174 | 
             
                @abstractmethod
         | 
| 172 175 | 
             
                async def initialize(self) -> bool:
         | 
| 173 176 | 
             
                    """
         | 
| 174 177 | 
             
                    Initialize the tool adapter.
         | 
| 175 | 
            -
             | 
| 178 | 
            +
             | 
| 176 179 | 
             
                    Returns:
         | 
| 177 180 | 
             
                        True if initialization successful
         | 
| 178 181 | 
             
                    """
         | 
| 179 182 | 
             
                    pass
         | 
| 180 | 
            -
             | 
| 183 | 
            +
             | 
| 181 184 | 
             
                @abstractmethod
         | 
| 182 185 | 
             
                async def shutdown(self) -> None:
         | 
| 183 186 | 
             
                    """
         | 
| @@ -189,80 +192,80 @@ class IMCPToolAdapter(ABC): | |
| 189 192 | 
             
            class IMCPToolRegistry(ABC):
         | 
| 190 193 | 
             
                """
         | 
| 191 194 | 
             
                Interface for MCP tool registry.
         | 
| 192 | 
            -
             | 
| 195 | 
            +
             | 
| 193 196 | 
             
                Manages registration, discovery, and invocation of MCP tools.
         | 
| 194 197 | 
             
                """
         | 
| 195 | 
            -
             | 
| 198 | 
            +
             | 
| 196 199 | 
             
                @abstractmethod
         | 
| 197 200 | 
             
                def register_tool(self, adapter: IMCPToolAdapter) -> bool:
         | 
| 198 201 | 
             
                    """
         | 
| 199 202 | 
             
                    Register a tool adapter.
         | 
| 200 | 
            -
             | 
| 203 | 
            +
             | 
| 201 204 | 
             
                    Args:
         | 
| 202 205 | 
             
                        adapter: Tool adapter to register
         | 
| 203 | 
            -
             | 
| 206 | 
            +
             | 
| 204 207 | 
             
                    Returns:
         | 
| 205 208 | 
             
                        True if registration successful
         | 
| 206 209 | 
             
                    """
         | 
| 207 210 | 
             
                    pass
         | 
| 208 | 
            -
             | 
| 211 | 
            +
             | 
| 209 212 | 
             
                @abstractmethod
         | 
| 210 213 | 
             
                def unregister_tool(self, tool_name: str) -> bool:
         | 
| 211 214 | 
             
                    """
         | 
| 212 215 | 
             
                    Unregister a tool by name.
         | 
| 213 | 
            -
             | 
| 216 | 
            +
             | 
| 214 217 | 
             
                    Args:
         | 
| 215 218 | 
             
                        tool_name: Name of tool to unregister
         | 
| 216 | 
            -
             | 
| 219 | 
            +
             | 
| 217 220 | 
             
                    Returns:
         | 
| 218 221 | 
             
                        True if unregistration successful
         | 
| 219 222 | 
             
                    """
         | 
| 220 223 | 
             
                    pass
         | 
| 221 | 
            -
             | 
| 224 | 
            +
             | 
| 222 225 | 
             
                @abstractmethod
         | 
| 223 226 | 
             
                def get_tool(self, tool_name: str) -> Optional[IMCPToolAdapter]:
         | 
| 224 227 | 
             
                    """
         | 
| 225 228 | 
             
                    Get a tool adapter by name.
         | 
| 226 | 
            -
             | 
| 229 | 
            +
             | 
| 227 230 | 
             
                    Args:
         | 
| 228 231 | 
             
                        tool_name: Name of the tool
         | 
| 229 | 
            -
             | 
| 232 | 
            +
             | 
| 230 233 | 
             
                    Returns:
         | 
| 231 234 | 
             
                        Tool adapter if found, None otherwise
         | 
| 232 235 | 
             
                    """
         | 
| 233 236 | 
             
                    pass
         | 
| 234 | 
            -
             | 
| 237 | 
            +
             | 
| 235 238 | 
             
                @abstractmethod
         | 
| 236 239 | 
             
                def list_tools(self) -> List[MCPToolDefinition]:
         | 
| 237 240 | 
             
                    """
         | 
| 238 241 | 
             
                    List all registered tools.
         | 
| 239 | 
            -
             | 
| 242 | 
            +
             | 
| 240 243 | 
             
                    Returns:
         | 
| 241 244 | 
             
                        List of tool definitions
         | 
| 242 245 | 
             
                    """
         | 
| 243 246 | 
             
                    pass
         | 
| 244 | 
            -
             | 
| 247 | 
            +
             | 
| 245 248 | 
             
                @abstractmethod
         | 
| 246 249 | 
             
                async def invoke_tool(self, invocation: MCPToolInvocation) -> MCPToolResult:
         | 
| 247 250 | 
             
                    """
         | 
| 248 251 | 
             
                    Invoke a tool through the registry.
         | 
| 249 | 
            -
             | 
| 252 | 
            +
             | 
| 250 253 | 
             
                    Args:
         | 
| 251 254 | 
             
                        invocation: Tool invocation request
         | 
| 252 | 
            -
             | 
| 255 | 
            +
             | 
| 253 256 | 
             
                    Returns:
         | 
| 254 257 | 
             
                        Tool execution result
         | 
| 255 258 | 
             
                    """
         | 
| 256 259 | 
             
                    pass
         | 
| 257 | 
            -
             | 
| 260 | 
            +
             | 
| 258 261 | 
             
                @abstractmethod
         | 
| 259 262 | 
             
                def search_tools(self, query: str) -> List[MCPToolDefinition]:
         | 
| 260 263 | 
             
                    """
         | 
| 261 264 | 
             
                    Search for tools by query.
         | 
| 262 | 
            -
             | 
| 265 | 
            +
             | 
| 263 266 | 
             
                    Args:
         | 
| 264 267 | 
             
                        query: Search query
         | 
| 265 | 
            -
             | 
| 268 | 
            +
             | 
| 266 269 | 
             
                    Returns:
         | 
| 267 270 | 
             
                        List of matching tool definitions
         | 
| 268 271 | 
             
                    """
         | 
| @@ -272,58 +275,58 @@ class IMCPToolRegistry(ABC): | |
| 272 275 | 
             
            class IMCPCommunication(ABC):
         | 
| 273 276 | 
             
                """
         | 
| 274 277 | 
             
                Interface for MCP communication handling.
         | 
| 275 | 
            -
             | 
| 278 | 
            +
             | 
| 276 279 | 
             
                Manages stdio-based communication with MCP clients.
         | 
| 277 280 | 
             
                """
         | 
| 278 | 
            -
             | 
| 281 | 
            +
             | 
| 279 282 | 
             
                @abstractmethod
         | 
| 280 283 | 
             
                async def send_message(self, message: Dict[str, Any]) -> None:
         | 
| 281 284 | 
             
                    """
         | 
| 282 285 | 
             
                    Send a message to the MCP client.
         | 
| 283 | 
            -
             | 
| 286 | 
            +
             | 
| 284 287 | 
             
                    Args:
         | 
| 285 288 | 
             
                        message: Message to send
         | 
| 286 289 | 
             
                    """
         | 
| 287 290 | 
             
                    pass
         | 
| 288 | 
            -
             | 
| 291 | 
            +
             | 
| 289 292 | 
             
                @abstractmethod
         | 
| 290 293 | 
             
                async def receive_message(self) -> Optional[Dict[str, Any]]:
         | 
| 291 294 | 
             
                    """
         | 
| 292 295 | 
             
                    Receive a message from the MCP client.
         | 
| 293 | 
            -
             | 
| 296 | 
            +
             | 
| 294 297 | 
             
                    Returns:
         | 
| 295 298 | 
             
                        Received message or None if no message available
         | 
| 296 299 | 
             
                    """
         | 
| 297 300 | 
             
                    pass
         | 
| 298 | 
            -
             | 
| 301 | 
            +
             | 
| 299 302 | 
             
                @abstractmethod
         | 
| 300 303 | 
             
                async def send_response(self, request_id: str, result: Any) -> None:
         | 
| 301 304 | 
             
                    """
         | 
| 302 305 | 
             
                    Send a response to a request.
         | 
| 303 | 
            -
             | 
| 306 | 
            +
             | 
| 304 307 | 
             
                    Args:
         | 
| 305 308 | 
             
                        request_id: ID of the request being responded to
         | 
| 306 309 | 
             
                        result: Result data
         | 
| 307 310 | 
             
                    """
         | 
| 308 311 | 
             
                    pass
         | 
| 309 | 
            -
             | 
| 312 | 
            +
             | 
| 310 313 | 
             
                @abstractmethod
         | 
| 311 314 | 
             
                async def send_error(self, request_id: str, error: str, code: int = -1) -> None:
         | 
| 312 315 | 
             
                    """
         | 
| 313 316 | 
             
                    Send an error response.
         | 
| 314 | 
            -
             | 
| 317 | 
            +
             | 
| 315 318 | 
             
                    Args:
         | 
| 316 319 | 
             
                        request_id: ID of the request that caused the error
         | 
| 317 320 | 
             
                        error: Error message
         | 
| 318 321 | 
             
                        code: Error code
         | 
| 319 322 | 
             
                    """
         | 
| 320 323 | 
             
                    pass
         | 
| 321 | 
            -
             | 
| 324 | 
            +
             | 
| 322 325 | 
             
                @abstractmethod
         | 
| 323 326 | 
             
                def is_connected(self) -> bool:
         | 
| 324 327 | 
             
                    """
         | 
| 325 328 | 
             
                    Check if communication channel is connected.
         | 
| 326 | 
            -
             | 
| 329 | 
            +
             | 
| 327 330 | 
             
                    Returns:
         | 
| 328 331 | 
             
                        True if connected
         | 
| 329 332 | 
             
                    """
         | 
| @@ -333,72 +336,72 @@ class IMCPCommunication(ABC): | |
| 333 336 | 
             
            class IMCPLifecycle(ABC):
         | 
| 334 337 | 
             
                """
         | 
| 335 338 | 
             
                Interface for MCP service lifecycle management.
         | 
| 336 | 
            -
             | 
| 339 | 
            +
             | 
| 337 340 | 
             
                Manages initialization, startup, shutdown, and health monitoring.
         | 
| 338 341 | 
             
                """
         | 
| 339 | 
            -
             | 
| 342 | 
            +
             | 
| 340 343 | 
             
                @abstractmethod
         | 
| 341 344 | 
             
                async def initialize(self) -> bool:
         | 
| 342 345 | 
             
                    """
         | 
| 343 346 | 
             
                    Initialize the MCP service.
         | 
| 344 | 
            -
             | 
| 347 | 
            +
             | 
| 345 348 | 
             
                    Returns:
         | 
| 346 349 | 
             
                        True if initialization successful
         | 
| 347 350 | 
             
                    """
         | 
| 348 351 | 
             
                    pass
         | 
| 349 | 
            -
             | 
| 352 | 
            +
             | 
| 350 353 | 
             
                @abstractmethod
         | 
| 351 354 | 
             
                async def start(self) -> bool:
         | 
| 352 355 | 
             
                    """
         | 
| 353 356 | 
             
                    Start the MCP service.
         | 
| 354 | 
            -
             | 
| 357 | 
            +
             | 
| 355 358 | 
             
                    Returns:
         | 
| 356 359 | 
             
                        True if startup successful
         | 
| 357 360 | 
             
                    """
         | 
| 358 361 | 
             
                    pass
         | 
| 359 | 
            -
             | 
| 362 | 
            +
             | 
| 360 363 | 
             
                @abstractmethod
         | 
| 361 364 | 
             
                async def stop(self) -> None:
         | 
| 362 365 | 
             
                    """
         | 
| 363 366 | 
             
                    Stop the MCP service gracefully.
         | 
| 364 367 | 
             
                    """
         | 
| 365 368 | 
             
                    pass
         | 
| 366 | 
            -
             | 
| 369 | 
            +
             | 
| 367 370 | 
             
                @abstractmethod
         | 
| 368 371 | 
             
                async def restart(self) -> bool:
         | 
| 369 372 | 
             
                    """
         | 
| 370 373 | 
             
                    Restart the MCP service.
         | 
| 371 | 
            -
             | 
| 374 | 
            +
             | 
| 372 375 | 
             
                    Returns:
         | 
| 373 376 | 
             
                        True if restart successful
         | 
| 374 377 | 
             
                    """
         | 
| 375 378 | 
             
                    pass
         | 
| 376 | 
            -
             | 
| 379 | 
            +
             | 
| 377 380 | 
             
                @abstractmethod
         | 
| 378 381 | 
             
                def get_state(self) -> str:
         | 
| 379 382 | 
             
                    """
         | 
| 380 383 | 
             
                    Get current service state.
         | 
| 381 | 
            -
             | 
| 384 | 
            +
             | 
| 382 385 | 
             
                    Returns:
         | 
| 383 386 | 
             
                        Service state (e.g., "initialized", "running", "stopped")
         | 
| 384 387 | 
             
                    """
         | 
| 385 388 | 
             
                    pass
         | 
| 386 | 
            -
             | 
| 389 | 
            +
             | 
| 387 390 | 
             
                @abstractmethod
         | 
| 388 391 | 
             
                def is_healthy(self) -> bool:
         | 
| 389 392 | 
             
                    """
         | 
| 390 393 | 
             
                    Check if service is healthy.
         | 
| 391 | 
            -
             | 
| 394 | 
            +
             | 
| 392 395 | 
             
                    Returns:
         | 
| 393 396 | 
             
                        True if service is healthy
         | 
| 394 397 | 
             
                    """
         | 
| 395 398 | 
             
                    pass
         | 
| 396 | 
            -
             | 
| 399 | 
            +
             | 
| 397 400 | 
             
                @abstractmethod
         | 
| 398 401 | 
             
                def get_health_status(self) -> Dict[str, Any]:
         | 
| 399 402 | 
             
                    """
         | 
| 400 403 | 
             
                    Get detailed health status.
         | 
| 401 | 
            -
             | 
| 404 | 
            +
             | 
| 402 405 | 
             
                    Returns:
         | 
| 403 406 | 
             
                        Health status information
         | 
| 404 407 | 
             
                    """
         | 
| @@ -412,40 +415,40 @@ class IMCPGateway(IMCPLifecycle): | |
| 412 415 | 
             
                Orchestrates tool registry, communication, and request handling.
         | 
| 413 416 | 
             
                Acts as a protocol bridge between Claude Desktop and internal tools.
         | 
| 414 417 | 
             
                """
         | 
| 415 | 
            -
             | 
| 418 | 
            +
             | 
| 416 419 | 
             
                @abstractmethod
         | 
| 417 420 | 
             
                def set_tool_registry(self, registry: IMCPToolRegistry) -> None:
         | 
| 418 421 | 
             
                    """
         | 
| 419 422 | 
             
                    Set the tool registry for the server.
         | 
| 420 | 
            -
             | 
| 423 | 
            +
             | 
| 421 424 | 
             
                    Args:
         | 
| 422 425 | 
             
                        registry: Tool registry to use
         | 
| 423 426 | 
             
                    """
         | 
| 424 427 | 
             
                    pass
         | 
| 425 | 
            -
             | 
| 428 | 
            +
             | 
| 426 429 | 
             
                @abstractmethod
         | 
| 427 430 | 
             
                def set_communication(self, communication: IMCPCommunication) -> None:
         | 
| 428 431 | 
             
                    """
         | 
| 429 432 | 
             
                    Set the communication handler.
         | 
| 430 | 
            -
             | 
| 433 | 
            +
             | 
| 431 434 | 
             
                    Args:
         | 
| 432 435 | 
             
                        communication: Communication handler to use
         | 
| 433 436 | 
             
                    """
         | 
| 434 437 | 
             
                    pass
         | 
| 435 | 
            -
             | 
| 438 | 
            +
             | 
| 436 439 | 
             
                @abstractmethod
         | 
| 437 440 | 
             
                async def handle_request(self, request: Dict[str, Any]) -> Dict[str, Any]:
         | 
| 438 441 | 
             
                    """
         | 
| 439 442 | 
             
                    Handle an MCP request.
         | 
| 440 | 
            -
             | 
| 443 | 
            +
             | 
| 441 444 | 
             
                    Args:
         | 
| 442 445 | 
             
                        request: MCP request message
         | 
| 443 | 
            -
             | 
| 446 | 
            +
             | 
| 444 447 | 
             
                    Returns:
         | 
| 445 448 | 
             
                        Response message
         | 
| 446 449 | 
             
                    """
         | 
| 447 450 | 
             
                    pass
         | 
| 448 | 
            -
             | 
| 451 | 
            +
             | 
| 449 452 | 
             
                @abstractmethod
         | 
| 450 453 | 
             
                async def run(self) -> None:
         | 
| 451 454 | 
             
                    """
         | 
| @@ -454,18 +457,18 @@ class IMCPGateway(IMCPLifecycle): | |
| 454 457 | 
             
                    This method should handle incoming requests and manage the gateway lifecycle.
         | 
| 455 458 | 
             
                    """
         | 
| 456 459 | 
             
                    pass
         | 
| 457 | 
            -
             | 
| 460 | 
            +
             | 
| 458 461 | 
             
                @abstractmethod
         | 
| 459 462 | 
             
                def register_handler(self, method: str, handler: Callable) -> None:
         | 
| 460 463 | 
             
                    """
         | 
| 461 464 | 
             
                    Register a custom request handler.
         | 
| 462 | 
            -
             | 
| 465 | 
            +
             | 
| 463 466 | 
             
                    Args:
         | 
| 464 467 | 
             
                        method: Method name to handle
         | 
| 465 468 | 
             
                        handler: Handler function
         | 
| 466 469 | 
             
                    """
         | 
| 467 470 | 
             
                    pass
         | 
| 468 | 
            -
             | 
| 471 | 
            +
             | 
| 469 472 | 
             
                @abstractmethod
         | 
| 470 473 | 
             
                def get_capabilities(self) -> Dict[str, Any]:
         | 
| 471 474 | 
             
                    """
         | 
| @@ -474,4 +477,4 @@ class IMCPGateway(IMCPLifecycle): | |
| 474 477 | 
             
                    Returns:
         | 
| 475 478 | 
             
                        Dictionary of gateway capabilities
         | 
| 476 479 | 
             
                    """
         | 
| 477 | 
            -
                    pass
         | 
| 480 | 
            +
                    pass
         |