claude-mpm 4.1.0__py3-none-any.whl → 4.1.2__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/BUILD_NUMBER +1 -1
- claude_mpm/VERSION +1 -1
- claude_mpm/__main__.py +1 -1
- claude_mpm/agents/BASE_PM.md +74 -46
- claude_mpm/agents/INSTRUCTIONS.md +11 -153
- claude_mpm/agents/WORKFLOW.md +61 -321
- claude_mpm/agents/__init__.py +11 -11
- claude_mpm/agents/agent_loader.py +23 -20
- claude_mpm/agents/agent_loader_integration.py +1 -1
- claude_mpm/agents/agents_metadata.py +27 -0
- claude_mpm/agents/async_agent_loader.py +5 -8
- claude_mpm/agents/base_agent_loader.py +36 -25
- claude_mpm/agents/frontmatter_validator.py +6 -6
- claude_mpm/agents/schema/agent_schema.json +1 -1
- claude_mpm/agents/system_agent_config.py +9 -9
- claude_mpm/agents/templates/api_qa.json +47 -2
- claude_mpm/agents/templates/imagemagick.json +256 -0
- claude_mpm/agents/templates/qa.json +41 -2
- claude_mpm/agents/templates/ticketing.json +5 -5
- claude_mpm/agents/templates/web_qa.json +133 -58
- claude_mpm/agents/templates/web_ui.json +3 -3
- claude_mpm/cli/__init__.py +51 -46
- claude_mpm/cli/__main__.py +1 -1
- claude_mpm/cli/commands/__init__.py +10 -12
- claude_mpm/cli/commands/agent_manager.py +186 -181
- claude_mpm/cli/commands/agents.py +271 -268
- claude_mpm/cli/commands/aggregate.py +30 -29
- claude_mpm/cli/commands/cleanup.py +50 -44
- claude_mpm/cli/commands/cleanup_orphaned_agents.py +25 -25
- claude_mpm/cli/commands/config.py +162 -127
- claude_mpm/cli/commands/doctor.py +52 -62
- claude_mpm/cli/commands/info.py +37 -25
- claude_mpm/cli/commands/mcp.py +3 -7
- claude_mpm/cli/commands/mcp_command_router.py +14 -18
- claude_mpm/cli/commands/mcp_install_commands.py +28 -23
- claude_mpm/cli/commands/mcp_pipx_config.py +58 -49
- claude_mpm/cli/commands/mcp_server_commands.py +23 -17
- claude_mpm/cli/commands/memory.py +192 -141
- claude_mpm/cli/commands/monitor.py +117 -88
- claude_mpm/cli/commands/run.py +120 -84
- claude_mpm/cli/commands/run_config_checker.py +4 -5
- claude_mpm/cli/commands/socketio_monitor.py +17 -19
- claude_mpm/cli/commands/tickets.py +92 -92
- claude_mpm/cli/parser.py +1 -5
- claude_mpm/cli/parsers/__init__.py +1 -1
- claude_mpm/cli/parsers/agent_manager_parser.py +50 -98
- claude_mpm/cli/parsers/agents_parser.py +2 -3
- claude_mpm/cli/parsers/base_parser.py +7 -5
- claude_mpm/cli/parsers/mcp_parser.py +4 -2
- claude_mpm/cli/parsers/monitor_parser.py +26 -18
- claude_mpm/cli/shared/__init__.py +10 -10
- claude_mpm/cli/shared/argument_patterns.py +57 -71
- claude_mpm/cli/shared/base_command.py +61 -53
- claude_mpm/cli/shared/error_handling.py +62 -58
- claude_mpm/cli/shared/output_formatters.py +78 -77
- claude_mpm/cli/startup_logging.py +204 -172
- claude_mpm/cli/utils.py +10 -11
- claude_mpm/cli_module/__init__.py +1 -1
- claude_mpm/cli_module/args.py +1 -1
- claude_mpm/cli_module/migration_example.py +5 -5
- claude_mpm/config/__init__.py +9 -9
- claude_mpm/config/agent_config.py +15 -14
- claude_mpm/config/experimental_features.py +4 -4
- claude_mpm/config/paths.py +0 -1
- claude_mpm/config/socketio_config.py +5 -6
- claude_mpm/constants.py +1 -2
- claude_mpm/core/__init__.py +8 -8
- claude_mpm/core/agent_name_normalizer.py +1 -1
- claude_mpm/core/agent_registry.py +20 -23
- claude_mpm/core/agent_session_manager.py +3 -3
- claude_mpm/core/base_service.py +7 -15
- claude_mpm/core/cache.py +4 -6
- claude_mpm/core/claude_runner.py +85 -113
- claude_mpm/core/config.py +43 -28
- claude_mpm/core/config_aliases.py +0 -9
- claude_mpm/core/config_constants.py +52 -30
- claude_mpm/core/constants.py +0 -1
- claude_mpm/core/container.py +18 -27
- claude_mpm/core/exceptions.py +2 -2
- claude_mpm/core/factories.py +10 -12
- claude_mpm/core/framework_loader.py +581 -280
- claude_mpm/core/hook_manager.py +26 -22
- claude_mpm/core/hook_performance_config.py +58 -47
- claude_mpm/core/injectable_service.py +1 -1
- claude_mpm/core/interactive_session.py +61 -152
- claude_mpm/core/interfaces.py +1 -100
- claude_mpm/core/lazy.py +5 -5
- claude_mpm/core/log_manager.py +587 -0
- claude_mpm/core/logger.py +125 -8
- claude_mpm/core/logging_config.py +15 -15
- claude_mpm/core/minimal_framework_loader.py +5 -8
- claude_mpm/core/oneshot_session.py +15 -33
- claude_mpm/core/optimized_agent_loader.py +4 -6
- claude_mpm/core/optimized_startup.py +2 -1
- claude_mpm/core/output_style_manager.py +147 -106
- claude_mpm/core/pm_hook_interceptor.py +0 -1
- claude_mpm/core/service_registry.py +11 -8
- claude_mpm/core/session_manager.py +1 -2
- claude_mpm/core/shared/__init__.py +1 -1
- claude_mpm/core/shared/config_loader.py +101 -97
- claude_mpm/core/shared/path_resolver.py +72 -68
- claude_mpm/core/shared/singleton_manager.py +56 -50
- claude_mpm/core/socketio_pool.py +26 -6
- claude_mpm/core/tool_access_control.py +4 -5
- claude_mpm/core/typing_utils.py +50 -59
- claude_mpm/core/unified_agent_registry.py +14 -19
- claude_mpm/core/unified_config.py +4 -6
- claude_mpm/core/unified_paths.py +197 -109
- claude_mpm/dashboard/open_dashboard.py +2 -4
- claude_mpm/experimental/cli_enhancements.py +51 -36
- claude_mpm/generators/agent_profile_generator.py +2 -4
- claude_mpm/hooks/base_hook.py +1 -2
- claude_mpm/hooks/claude_hooks/connection_pool.py +72 -26
- claude_mpm/hooks/claude_hooks/event_handlers.py +93 -38
- claude_mpm/hooks/claude_hooks/hook_handler.py +130 -76
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +104 -77
- claude_mpm/hooks/claude_hooks/memory_integration.py +2 -4
- claude_mpm/hooks/claude_hooks/response_tracking.py +15 -11
- claude_mpm/hooks/claude_hooks/tool_analysis.py +12 -18
- claude_mpm/hooks/memory_integration_hook.py +5 -5
- claude_mpm/hooks/tool_call_interceptor.py +1 -1
- claude_mpm/hooks/validation_hooks.py +4 -4
- claude_mpm/init.py +4 -9
- claude_mpm/models/__init__.py +2 -2
- claude_mpm/models/agent_session.py +11 -14
- claude_mpm/scripts/mcp_server.py +20 -11
- claude_mpm/scripts/mcp_wrapper.py +5 -5
- claude_mpm/scripts/mpm_doctor.py +321 -0
- claude_mpm/scripts/socketio_daemon.py +28 -25
- claude_mpm/scripts/socketio_daemon_hardened.py +298 -258
- claude_mpm/scripts/socketio_server_manager.py +116 -95
- claude_mpm/services/__init__.py +49 -49
- claude_mpm/services/agent_capabilities_service.py +12 -18
- claude_mpm/services/agents/__init__.py +22 -22
- claude_mpm/services/agents/agent_builder.py +140 -119
- claude_mpm/services/agents/deployment/__init__.py +3 -3
- claude_mpm/services/agents/deployment/agent_config_provider.py +9 -9
- claude_mpm/services/agents/deployment/agent_configuration_manager.py +19 -20
- claude_mpm/services/agents/deployment/agent_definition_factory.py +1 -5
- claude_mpm/services/agents/deployment/agent_deployment.py +136 -106
- claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -8
- claude_mpm/services/agents/deployment/agent_environment_manager.py +2 -7
- claude_mpm/services/agents/deployment/agent_filesystem_manager.py +6 -10
- claude_mpm/services/agents/deployment/agent_format_converter.py +11 -15
- claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +2 -3
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +5 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +13 -19
- claude_mpm/services/agents/deployment/agent_restore_handler.py +0 -1
- claude_mpm/services/agents/deployment/agent_template_builder.py +26 -35
- claude_mpm/services/agents/deployment/agent_validator.py +0 -1
- claude_mpm/services/agents/deployment/agent_version_manager.py +7 -9
- claude_mpm/services/agents/deployment/agent_versioning.py +3 -3
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +6 -7
- claude_mpm/services/agents/deployment/async_agent_deployment.py +51 -38
- claude_mpm/services/agents/deployment/config/__init__.py +1 -1
- claude_mpm/services/agents/deployment/config/deployment_config.py +7 -8
- claude_mpm/services/agents/deployment/deployment_type_detector.py +1 -1
- claude_mpm/services/agents/deployment/deployment_wrapper.py +18 -18
- claude_mpm/services/agents/deployment/facade/__init__.py +1 -1
- claude_mpm/services/agents/deployment/facade/deployment_executor.py +0 -3
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -4
- claude_mpm/services/agents/deployment/interface_adapter.py +5 -7
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +345 -276
- claude_mpm/services/agents/deployment/pipeline/__init__.py +2 -2
- claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +6 -4
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +3 -3
- claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +2 -2
- claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +14 -13
- claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +0 -1
- claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +1 -1
- claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +8 -9
- claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +1 -1
- claude_mpm/services/agents/deployment/processors/__init__.py +1 -1
- claude_mpm/services/agents/deployment/processors/agent_processor.py +20 -16
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +5 -12
- claude_mpm/services/agents/deployment/results/__init__.py +1 -1
- claude_mpm/services/agents/deployment/results/deployment_result_builder.py +1 -1
- claude_mpm/services/agents/deployment/strategies/__init__.py +2 -2
- claude_mpm/services/agents/deployment/strategies/base_strategy.py +1 -7
- claude_mpm/services/agents/deployment/strategies/project_strategy.py +1 -4
- claude_mpm/services/agents/deployment/strategies/system_strategy.py +2 -3
- claude_mpm/services/agents/deployment/strategies/user_strategy.py +3 -7
- claude_mpm/services/agents/deployment/validation/__init__.py +1 -1
- claude_mpm/services/agents/deployment/validation/agent_validator.py +1 -1
- claude_mpm/services/agents/deployment/validation/template_validator.py +2 -2
- claude_mpm/services/agents/deployment/validation/validation_result.py +2 -6
- claude_mpm/services/agents/loading/__init__.py +1 -1
- claude_mpm/services/agents/loading/agent_profile_loader.py +6 -12
- claude_mpm/services/agents/loading/base_agent_manager.py +5 -5
- claude_mpm/services/agents/loading/framework_agent_loader.py +2 -4
- claude_mpm/services/agents/management/__init__.py +1 -1
- claude_mpm/services/agents/management/agent_capabilities_generator.py +1 -3
- claude_mpm/services/agents/management/agent_management_service.py +5 -9
- claude_mpm/services/agents/memory/__init__.py +4 -4
- claude_mpm/services/agents/memory/agent_memory_manager.py +280 -160
- claude_mpm/services/agents/memory/agent_persistence_service.py +0 -2
- claude_mpm/services/agents/memory/content_manager.py +44 -38
- claude_mpm/services/agents/memory/template_generator.py +4 -6
- claude_mpm/services/agents/registry/__init__.py +10 -6
- claude_mpm/services/agents/registry/deployed_agent_discovery.py +30 -27
- claude_mpm/services/agents/registry/modification_tracker.py +3 -6
- claude_mpm/services/async_session_logger.py +1 -2
- claude_mpm/services/claude_session_logger.py +1 -2
- claude_mpm/services/command_deployment_service.py +173 -0
- claude_mpm/services/command_handler_service.py +20 -22
- claude_mpm/services/core/__init__.py +25 -25
- claude_mpm/services/core/base.py +0 -5
- claude_mpm/services/core/interfaces/__init__.py +32 -32
- claude_mpm/services/core/interfaces/agent.py +0 -21
- claude_mpm/services/core/interfaces/communication.py +0 -27
- claude_mpm/services/core/interfaces/infrastructure.py +0 -56
- claude_mpm/services/core/interfaces/service.py +0 -29
- claude_mpm/services/diagnostics/__init__.py +1 -1
- claude_mpm/services/diagnostics/checks/__init__.py +6 -6
- claude_mpm/services/diagnostics/checks/agent_check.py +89 -80
- claude_mpm/services/diagnostics/checks/base_check.py +12 -16
- claude_mpm/services/diagnostics/checks/claude_desktop_check.py +84 -81
- claude_mpm/services/diagnostics/checks/common_issues_check.py +99 -91
- claude_mpm/services/diagnostics/checks/configuration_check.py +82 -77
- claude_mpm/services/diagnostics/checks/filesystem_check.py +67 -68
- claude_mpm/services/diagnostics/checks/installation_check.py +254 -94
- claude_mpm/services/diagnostics/checks/mcp_check.py +90 -88
- claude_mpm/services/diagnostics/checks/monitor_check.py +75 -76
- claude_mpm/services/diagnostics/checks/startup_log_check.py +67 -73
- claude_mpm/services/diagnostics/diagnostic_runner.py +67 -59
- claude_mpm/services/diagnostics/doctor_reporter.py +107 -70
- claude_mpm/services/diagnostics/models.py +21 -19
- claude_mpm/services/event_aggregator.py +10 -17
- claude_mpm/services/event_bus/__init__.py +1 -1
- claude_mpm/services/event_bus/config.py +54 -35
- claude_mpm/services/event_bus/event_bus.py +76 -71
- claude_mpm/services/event_bus/relay.py +74 -64
- claude_mpm/services/events/__init__.py +11 -11
- claude_mpm/services/events/consumers/__init__.py +3 -3
- claude_mpm/services/events/consumers/dead_letter.py +71 -63
- claude_mpm/services/events/consumers/logging.py +39 -37
- claude_mpm/services/events/consumers/metrics.py +56 -57
- claude_mpm/services/events/consumers/socketio.py +82 -81
- claude_mpm/services/events/core.py +110 -99
- claude_mpm/services/events/interfaces.py +56 -72
- claude_mpm/services/events/producers/__init__.py +1 -1
- claude_mpm/services/events/producers/hook.py +38 -38
- claude_mpm/services/events/producers/system.py +46 -44
- claude_mpm/services/exceptions.py +81 -80
- claude_mpm/services/framework_claude_md_generator/__init__.py +2 -4
- claude_mpm/services/framework_claude_md_generator/content_assembler.py +3 -5
- claude_mpm/services/framework_claude_md_generator/content_validator.py +1 -1
- claude_mpm/services/framework_claude_md_generator/deployment_manager.py +4 -4
- claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -1
- claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -2
- claude_mpm/services/framework_claude_md_generator/version_manager.py +4 -5
- claude_mpm/services/hook_service.py +6 -9
- claude_mpm/services/infrastructure/__init__.py +1 -1
- claude_mpm/services/infrastructure/context_preservation.py +8 -12
- claude_mpm/services/infrastructure/monitoring.py +21 -23
- claude_mpm/services/mcp_gateway/__init__.py +37 -37
- claude_mpm/services/mcp_gateway/auto_configure.py +95 -103
- claude_mpm/services/mcp_gateway/config/__init__.py +1 -1
- claude_mpm/services/mcp_gateway/config/config_loader.py +23 -25
- claude_mpm/services/mcp_gateway/config/config_schema.py +5 -5
- claude_mpm/services/mcp_gateway/config/configuration.py +9 -6
- claude_mpm/services/mcp_gateway/core/__init__.py +10 -10
- claude_mpm/services/mcp_gateway/core/base.py +0 -3
- claude_mpm/services/mcp_gateway/core/interfaces.py +1 -38
- claude_mpm/services/mcp_gateway/core/process_pool.py +99 -93
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +65 -62
- claude_mpm/services/mcp_gateway/core/startup_verification.py +75 -74
- claude_mpm/services/mcp_gateway/main.py +2 -1
- claude_mpm/services/mcp_gateway/registry/service_registry.py +5 -8
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +1 -1
- claude_mpm/services/mcp_gateway/server/__init__.py +1 -1
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +12 -19
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +4 -3
- claude_mpm/services/mcp_gateway/server/stdio_server.py +79 -71
- claude_mpm/services/mcp_gateway/tools/__init__.py +2 -2
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +5 -6
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +13 -22
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +79 -78
- claude_mpm/services/mcp_gateway/tools/hello_world.py +12 -14
- claude_mpm/services/mcp_gateway/tools/ticket_tools.py +42 -49
- claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +51 -55
- claude_mpm/services/memory/__init__.py +3 -3
- claude_mpm/services/memory/builder.py +3 -6
- claude_mpm/services/memory/cache/__init__.py +1 -1
- claude_mpm/services/memory/cache/shared_prompt_cache.py +3 -5
- claude_mpm/services/memory/cache/simple_cache.py +1 -1
- claude_mpm/services/memory/indexed_memory.py +5 -7
- claude_mpm/services/memory/optimizer.py +7 -10
- claude_mpm/services/memory/router.py +8 -9
- claude_mpm/services/memory_hook_service.py +48 -34
- claude_mpm/services/monitor_build_service.py +77 -73
- claude_mpm/services/port_manager.py +130 -108
- claude_mpm/services/project/analyzer.py +12 -10
- claude_mpm/services/project/registry.py +11 -11
- claude_mpm/services/recovery_manager.py +10 -19
- claude_mpm/services/response_tracker.py +0 -1
- claude_mpm/services/runner_configuration_service.py +19 -20
- claude_mpm/services/session_management_service.py +7 -11
- claude_mpm/services/shared/__init__.py +1 -1
- claude_mpm/services/shared/async_service_base.py +58 -50
- claude_mpm/services/shared/config_service_base.py +73 -67
- claude_mpm/services/shared/lifecycle_service_base.py +82 -78
- claude_mpm/services/shared/manager_base.py +94 -82
- claude_mpm/services/shared/service_factory.py +96 -98
- claude_mpm/services/socketio/__init__.py +3 -3
- claude_mpm/services/socketio/client_proxy.py +5 -5
- claude_mpm/services/socketio/event_normalizer.py +199 -181
- claude_mpm/services/socketio/handlers/__init__.py +3 -3
- claude_mpm/services/socketio/handlers/base.py +5 -4
- claude_mpm/services/socketio/handlers/connection.py +163 -136
- claude_mpm/services/socketio/handlers/file.py +13 -14
- claude_mpm/services/socketio/handlers/git.py +12 -7
- claude_mpm/services/socketio/handlers/hook.py +49 -44
- claude_mpm/services/socketio/handlers/memory.py +0 -1
- claude_mpm/services/socketio/handlers/project.py +0 -1
- claude_mpm/services/socketio/handlers/registry.py +37 -19
- claude_mpm/services/socketio/migration_utils.py +98 -84
- claude_mpm/services/socketio/server/__init__.py +1 -1
- claude_mpm/services/socketio/server/broadcaster.py +81 -87
- claude_mpm/services/socketio/server/core.py +65 -54
- claude_mpm/services/socketio/server/eventbus_integration.py +95 -56
- claude_mpm/services/socketio/server/main.py +64 -38
- claude_mpm/services/socketio_client_manager.py +10 -12
- claude_mpm/services/subprocess_launcher_service.py +4 -7
- claude_mpm/services/system_instructions_service.py +13 -14
- claude_mpm/services/ticket_manager.py +2 -2
- claude_mpm/services/utility_service.py +5 -13
- claude_mpm/services/version_control/__init__.py +16 -16
- claude_mpm/services/version_control/branch_strategy.py +5 -8
- claude_mpm/services/version_control/conflict_resolution.py +9 -23
- claude_mpm/services/version_control/git_operations.py +5 -7
- claude_mpm/services/version_control/semantic_versioning.py +16 -17
- claude_mpm/services/version_control/version_parser.py +13 -18
- claude_mpm/services/version_service.py +10 -11
- claude_mpm/storage/__init__.py +1 -1
- claude_mpm/storage/state_storage.py +22 -28
- claude_mpm/utils/__init__.py +6 -6
- claude_mpm/utils/agent_dependency_loader.py +47 -33
- claude_mpm/utils/config_manager.py +11 -14
- claude_mpm/utils/dependency_cache.py +1 -1
- claude_mpm/utils/dependency_manager.py +13 -17
- claude_mpm/utils/dependency_strategies.py +8 -10
- claude_mpm/utils/environment_context.py +3 -9
- claude_mpm/utils/error_handler.py +3 -13
- claude_mpm/utils/file_utils.py +1 -1
- claude_mpm/utils/path_operations.py +8 -12
- claude_mpm/utils/robust_installer.py +110 -33
- claude_mpm/utils/subprocess_utils.py +5 -6
- claude_mpm/validation/agent_validator.py +3 -6
- claude_mpm/validation/frontmatter_validator.py +1 -1
- {claude_mpm-4.1.0.dist-info → claude_mpm-4.1.2.dist-info}/METADATA +1 -1
- claude_mpm-4.1.2.dist-info/RECORD +498 -0
- claude_mpm-4.1.0.dist-info/RECORD +0 -494
- {claude_mpm-4.1.0.dist-info → claude_mpm-4.1.2.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.0.dist-info → claude_mpm-4.1.2.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.1.0.dist-info → claude_mpm-4.1.2.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.0.dist-info → claude_mpm-4.1.2.dist-info}/top_level.txt +0 -0
|
@@ -8,11 +8,9 @@ Part of ISS-0034: Infrastructure Setup - MCP Gateway Project Foundation
|
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
import asyncio
|
|
11
|
-
import logging
|
|
12
11
|
from enum import Enum
|
|
13
12
|
from typing import Any, Dict, Optional
|
|
14
13
|
|
|
15
|
-
from claude_mpm.core.logger import get_logger
|
|
16
14
|
from claude_mpm.services.core.base import BaseService
|
|
17
15
|
|
|
18
16
|
|
|
@@ -223,7 +221,6 @@ class BaseMCPService(BaseService):
|
|
|
223
221
|
Subclasses should override this method to implement custom shutdown.
|
|
224
222
|
"""
|
|
225
223
|
# Default implementation - subclasses should override
|
|
226
|
-
pass
|
|
227
224
|
|
|
228
225
|
async def restart(self) -> bool:
|
|
229
226
|
"""
|
|
@@ -8,12 +8,10 @@ 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
|
|
12
11
|
from abc import ABC, abstractmethod
|
|
13
12
|
from dataclasses import dataclass
|
|
14
|
-
from datetime import datetime
|
|
15
13
|
from pathlib import Path
|
|
16
|
-
from typing import Any, Callable, Dict, List, Optional
|
|
14
|
+
from typing import Any, Callable, Dict, List, Optional
|
|
17
15
|
|
|
18
16
|
|
|
19
17
|
# Tool-related data structures
|
|
@@ -70,7 +68,6 @@ class IMCPConfiguration(ABC):
|
|
|
70
68
|
Returns:
|
|
71
69
|
True if configuration loaded successfully
|
|
72
70
|
"""
|
|
73
|
-
pass
|
|
74
71
|
|
|
75
72
|
@abstractmethod
|
|
76
73
|
def get(self, key: str, default: Any = None) -> Any:
|
|
@@ -84,7 +81,6 @@ class IMCPConfiguration(ABC):
|
|
|
84
81
|
Returns:
|
|
85
82
|
Configuration value or default
|
|
86
83
|
"""
|
|
87
|
-
pass
|
|
88
84
|
|
|
89
85
|
@abstractmethod
|
|
90
86
|
def set(self, key: str, value: Any) -> None:
|
|
@@ -95,7 +91,6 @@ class IMCPConfiguration(ABC):
|
|
|
95
91
|
key: Configuration key (supports dot notation)
|
|
96
92
|
value: Configuration value
|
|
97
93
|
"""
|
|
98
|
-
pass
|
|
99
94
|
|
|
100
95
|
@abstractmethod
|
|
101
96
|
def validate(self) -> bool:
|
|
@@ -105,7 +100,6 @@ class IMCPConfiguration(ABC):
|
|
|
105
100
|
Returns:
|
|
106
101
|
True if configuration is valid
|
|
107
102
|
"""
|
|
108
|
-
pass
|
|
109
103
|
|
|
110
104
|
@abstractmethod
|
|
111
105
|
def get_server_config(self) -> Dict[str, Any]:
|
|
@@ -115,7 +109,6 @@ class IMCPConfiguration(ABC):
|
|
|
115
109
|
Returns:
|
|
116
110
|
Server configuration dictionary
|
|
117
111
|
"""
|
|
118
|
-
pass
|
|
119
112
|
|
|
120
113
|
@abstractmethod
|
|
121
114
|
def get_tools_config(self) -> Dict[str, Any]:
|
|
@@ -125,7 +118,6 @@ class IMCPConfiguration(ABC):
|
|
|
125
118
|
Returns:
|
|
126
119
|
Tools configuration dictionary
|
|
127
120
|
"""
|
|
128
|
-
pass
|
|
129
121
|
|
|
130
122
|
|
|
131
123
|
class IMCPToolAdapter(ABC):
|
|
@@ -143,7 +135,6 @@ class IMCPToolAdapter(ABC):
|
|
|
143
135
|
Returns:
|
|
144
136
|
Tool definition with schema and metadata
|
|
145
137
|
"""
|
|
146
|
-
pass
|
|
147
138
|
|
|
148
139
|
@abstractmethod
|
|
149
140
|
async def invoke(self, invocation: MCPToolInvocation) -> MCPToolResult:
|
|
@@ -156,7 +147,6 @@ class IMCPToolAdapter(ABC):
|
|
|
156
147
|
Returns:
|
|
157
148
|
Tool execution result
|
|
158
149
|
"""
|
|
159
|
-
pass
|
|
160
150
|
|
|
161
151
|
@abstractmethod
|
|
162
152
|
def validate_parameters(self, parameters: Dict[str, Any]) -> bool:
|
|
@@ -169,7 +159,6 @@ class IMCPToolAdapter(ABC):
|
|
|
169
159
|
Returns:
|
|
170
160
|
True if parameters are valid
|
|
171
161
|
"""
|
|
172
|
-
pass
|
|
173
162
|
|
|
174
163
|
@abstractmethod
|
|
175
164
|
async def initialize(self) -> bool:
|
|
@@ -179,14 +168,12 @@ class IMCPToolAdapter(ABC):
|
|
|
179
168
|
Returns:
|
|
180
169
|
True if initialization successful
|
|
181
170
|
"""
|
|
182
|
-
pass
|
|
183
171
|
|
|
184
172
|
@abstractmethod
|
|
185
173
|
async def shutdown(self) -> None:
|
|
186
174
|
"""
|
|
187
175
|
Shutdown the tool adapter and clean up resources.
|
|
188
176
|
"""
|
|
189
|
-
pass
|
|
190
177
|
|
|
191
178
|
|
|
192
179
|
class IMCPToolRegistry(ABC):
|
|
@@ -207,7 +194,6 @@ class IMCPToolRegistry(ABC):
|
|
|
207
194
|
Returns:
|
|
208
195
|
True if registration successful
|
|
209
196
|
"""
|
|
210
|
-
pass
|
|
211
197
|
|
|
212
198
|
@abstractmethod
|
|
213
199
|
def unregister_tool(self, tool_name: str) -> bool:
|
|
@@ -220,7 +206,6 @@ class IMCPToolRegistry(ABC):
|
|
|
220
206
|
Returns:
|
|
221
207
|
True if unregistration successful
|
|
222
208
|
"""
|
|
223
|
-
pass
|
|
224
209
|
|
|
225
210
|
@abstractmethod
|
|
226
211
|
def get_tool(self, tool_name: str) -> Optional[IMCPToolAdapter]:
|
|
@@ -233,7 +218,6 @@ class IMCPToolRegistry(ABC):
|
|
|
233
218
|
Returns:
|
|
234
219
|
Tool adapter if found, None otherwise
|
|
235
220
|
"""
|
|
236
|
-
pass
|
|
237
221
|
|
|
238
222
|
@abstractmethod
|
|
239
223
|
def list_tools(self) -> List[MCPToolDefinition]:
|
|
@@ -243,7 +227,6 @@ class IMCPToolRegistry(ABC):
|
|
|
243
227
|
Returns:
|
|
244
228
|
List of tool definitions
|
|
245
229
|
"""
|
|
246
|
-
pass
|
|
247
230
|
|
|
248
231
|
@abstractmethod
|
|
249
232
|
async def invoke_tool(self, invocation: MCPToolInvocation) -> MCPToolResult:
|
|
@@ -256,7 +239,6 @@ class IMCPToolRegistry(ABC):
|
|
|
256
239
|
Returns:
|
|
257
240
|
Tool execution result
|
|
258
241
|
"""
|
|
259
|
-
pass
|
|
260
242
|
|
|
261
243
|
@abstractmethod
|
|
262
244
|
def search_tools(self, query: str) -> List[MCPToolDefinition]:
|
|
@@ -269,7 +251,6 @@ class IMCPToolRegistry(ABC):
|
|
|
269
251
|
Returns:
|
|
270
252
|
List of matching tool definitions
|
|
271
253
|
"""
|
|
272
|
-
pass
|
|
273
254
|
|
|
274
255
|
|
|
275
256
|
class IMCPCommunication(ABC):
|
|
@@ -287,7 +268,6 @@ class IMCPCommunication(ABC):
|
|
|
287
268
|
Args:
|
|
288
269
|
message: Message to send
|
|
289
270
|
"""
|
|
290
|
-
pass
|
|
291
271
|
|
|
292
272
|
@abstractmethod
|
|
293
273
|
async def receive_message(self) -> Optional[Dict[str, Any]]:
|
|
@@ -297,7 +277,6 @@ class IMCPCommunication(ABC):
|
|
|
297
277
|
Returns:
|
|
298
278
|
Received message or None if no message available
|
|
299
279
|
"""
|
|
300
|
-
pass
|
|
301
280
|
|
|
302
281
|
@abstractmethod
|
|
303
282
|
async def send_response(self, request_id: str, result: Any) -> None:
|
|
@@ -308,7 +287,6 @@ class IMCPCommunication(ABC):
|
|
|
308
287
|
request_id: ID of the request being responded to
|
|
309
288
|
result: Result data
|
|
310
289
|
"""
|
|
311
|
-
pass
|
|
312
290
|
|
|
313
291
|
@abstractmethod
|
|
314
292
|
async def send_error(self, request_id: str, error: str, code: int = -1) -> None:
|
|
@@ -320,7 +298,6 @@ class IMCPCommunication(ABC):
|
|
|
320
298
|
error: Error message
|
|
321
299
|
code: Error code
|
|
322
300
|
"""
|
|
323
|
-
pass
|
|
324
301
|
|
|
325
302
|
@abstractmethod
|
|
326
303
|
def is_connected(self) -> bool:
|
|
@@ -330,7 +307,6 @@ class IMCPCommunication(ABC):
|
|
|
330
307
|
Returns:
|
|
331
308
|
True if connected
|
|
332
309
|
"""
|
|
333
|
-
pass
|
|
334
310
|
|
|
335
311
|
|
|
336
312
|
class IMCPLifecycle(ABC):
|
|
@@ -348,7 +324,6 @@ class IMCPLifecycle(ABC):
|
|
|
348
324
|
Returns:
|
|
349
325
|
True if initialization successful
|
|
350
326
|
"""
|
|
351
|
-
pass
|
|
352
327
|
|
|
353
328
|
@abstractmethod
|
|
354
329
|
async def start(self) -> bool:
|
|
@@ -358,14 +333,12 @@ class IMCPLifecycle(ABC):
|
|
|
358
333
|
Returns:
|
|
359
334
|
True if startup successful
|
|
360
335
|
"""
|
|
361
|
-
pass
|
|
362
336
|
|
|
363
337
|
@abstractmethod
|
|
364
338
|
async def stop(self) -> None:
|
|
365
339
|
"""
|
|
366
340
|
Stop the MCP service gracefully.
|
|
367
341
|
"""
|
|
368
|
-
pass
|
|
369
342
|
|
|
370
343
|
@abstractmethod
|
|
371
344
|
async def restart(self) -> bool:
|
|
@@ -375,7 +348,6 @@ class IMCPLifecycle(ABC):
|
|
|
375
348
|
Returns:
|
|
376
349
|
True if restart successful
|
|
377
350
|
"""
|
|
378
|
-
pass
|
|
379
351
|
|
|
380
352
|
@abstractmethod
|
|
381
353
|
def get_state(self) -> str:
|
|
@@ -385,7 +357,6 @@ class IMCPLifecycle(ABC):
|
|
|
385
357
|
Returns:
|
|
386
358
|
Service state (e.g., "initialized", "running", "stopped")
|
|
387
359
|
"""
|
|
388
|
-
pass
|
|
389
360
|
|
|
390
361
|
@abstractmethod
|
|
391
362
|
def is_healthy(self) -> bool:
|
|
@@ -395,7 +366,6 @@ class IMCPLifecycle(ABC):
|
|
|
395
366
|
Returns:
|
|
396
367
|
True if service is healthy
|
|
397
368
|
"""
|
|
398
|
-
pass
|
|
399
369
|
|
|
400
370
|
@abstractmethod
|
|
401
371
|
def get_health_status(self) -> Dict[str, Any]:
|
|
@@ -405,7 +375,6 @@ class IMCPLifecycle(ABC):
|
|
|
405
375
|
Returns:
|
|
406
376
|
Health status information
|
|
407
377
|
"""
|
|
408
|
-
pass
|
|
409
378
|
|
|
410
379
|
|
|
411
380
|
class IMCPGateway(IMCPLifecycle):
|
|
@@ -424,7 +393,6 @@ class IMCPGateway(IMCPLifecycle):
|
|
|
424
393
|
Args:
|
|
425
394
|
registry: Tool registry to use
|
|
426
395
|
"""
|
|
427
|
-
pass
|
|
428
396
|
|
|
429
397
|
@abstractmethod
|
|
430
398
|
def set_communication(self, communication: IMCPCommunication) -> None:
|
|
@@ -434,7 +402,6 @@ class IMCPGateway(IMCPLifecycle):
|
|
|
434
402
|
Args:
|
|
435
403
|
communication: Communication handler to use
|
|
436
404
|
"""
|
|
437
|
-
pass
|
|
438
405
|
|
|
439
406
|
@abstractmethod
|
|
440
407
|
async def handle_request(self, request: Dict[str, Any]) -> Dict[str, Any]:
|
|
@@ -447,7 +414,6 @@ class IMCPGateway(IMCPLifecycle):
|
|
|
447
414
|
Returns:
|
|
448
415
|
Response message
|
|
449
416
|
"""
|
|
450
|
-
pass
|
|
451
417
|
|
|
452
418
|
@abstractmethod
|
|
453
419
|
async def run(self) -> None:
|
|
@@ -456,7 +422,6 @@ class IMCPGateway(IMCPLifecycle):
|
|
|
456
422
|
|
|
457
423
|
This method should handle incoming requests and manage the gateway lifecycle.
|
|
458
424
|
"""
|
|
459
|
-
pass
|
|
460
425
|
|
|
461
426
|
@abstractmethod
|
|
462
427
|
def register_handler(self, method: str, handler: Callable) -> None:
|
|
@@ -467,7 +432,6 @@ class IMCPGateway(IMCPLifecycle):
|
|
|
467
432
|
method: Method name to handle
|
|
468
433
|
handler: Handler function
|
|
469
434
|
"""
|
|
470
|
-
pass
|
|
471
435
|
|
|
472
436
|
@abstractmethod
|
|
473
437
|
def get_capabilities(self) -> Dict[str, Any]:
|
|
@@ -477,4 +441,3 @@ class IMCPGateway(IMCPLifecycle):
|
|
|
477
441
|
Returns:
|
|
478
442
|
Dictionary of gateway capabilities
|
|
479
443
|
"""
|
|
480
|
-
pass
|