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
|
@@ -24,30 +24,35 @@ if tools_admin_dir.exists() and str(tools_admin_dir) not in sys.path:
|
|
|
24
24
|
|
|
25
25
|
try:
|
|
26
26
|
# Import ServerManager from the actual implementation
|
|
27
|
-
from socketio_server_manager import ServerManager as BaseServerManager
|
|
28
27
|
import subprocess
|
|
29
|
-
|
|
28
|
+
|
|
29
|
+
from socketio_server_manager import ServerManager as BaseServerManager
|
|
30
|
+
|
|
30
31
|
# Patch the ServerManager to use project-local PID file and daemon
|
|
31
32
|
class ServerManager(BaseServerManager):
|
|
32
33
|
"""Patched ServerManager that uses project-local PID file and daemon.
|
|
33
|
-
|
|
34
|
+
|
|
34
35
|
WHY: The daemon stores its PID file in the project's .claude-mpm
|
|
35
36
|
directory, not in the home directory. This patch ensures the
|
|
36
37
|
ServerManager looks in the correct location and uses the daemon
|
|
37
38
|
for starting servers when the standalone module is not available.
|
|
38
39
|
"""
|
|
39
|
-
|
|
40
|
+
|
|
40
41
|
def __init__(self):
|
|
41
42
|
super().__init__()
|
|
42
43
|
# Override the daemon PID file path to use project root
|
|
43
44
|
from claude_mpm.core.unified_paths import get_project_root
|
|
44
|
-
|
|
45
|
+
|
|
46
|
+
self.daemon_pidfile_path = (
|
|
47
|
+
get_project_root() / ".claude-mpm" / "socketio-server.pid"
|
|
48
|
+
)
|
|
45
49
|
self.daemon_script = script_dir / "socketio_daemon.py"
|
|
46
|
-
|
|
47
|
-
def start_server(
|
|
48
|
-
|
|
50
|
+
|
|
51
|
+
def start_server(
|
|
52
|
+
self, port: int = None, host: str = "localhost", server_id: str = None
|
|
53
|
+
) -> bool:
|
|
49
54
|
"""Start Socket.IO server, preferring daemon over standalone.
|
|
50
|
-
|
|
55
|
+
|
|
51
56
|
WHY: When the standalone_socketio_server module is not available,
|
|
52
57
|
we fallback to using the daemon script which is always present.
|
|
53
58
|
"""
|
|
@@ -58,30 +63,36 @@ try:
|
|
|
58
63
|
pid = int(f.read().strip())
|
|
59
64
|
# Check if process is running
|
|
60
65
|
import psutil
|
|
66
|
+
|
|
61
67
|
process = psutil.Process(pid)
|
|
62
68
|
if process.is_running():
|
|
63
|
-
print(
|
|
69
|
+
print(
|
|
70
|
+
f"Socket.IO daemon server is already running (PID: {pid})"
|
|
71
|
+
)
|
|
64
72
|
return True
|
|
65
73
|
except:
|
|
66
74
|
pass
|
|
67
|
-
|
|
75
|
+
|
|
68
76
|
# Try to use the daemon script for starting
|
|
69
77
|
if self.daemon_script.exists():
|
|
70
|
-
print(
|
|
78
|
+
print(
|
|
79
|
+
f"Starting server on {host}:{port or self.base_port} using daemon..."
|
|
80
|
+
)
|
|
71
81
|
try:
|
|
72
82
|
result = subprocess.run(
|
|
73
83
|
[sys.executable, str(self.daemon_script), "start"],
|
|
74
84
|
capture_output=True,
|
|
75
|
-
text=True
|
|
85
|
+
text=True,
|
|
86
|
+
check=False,
|
|
76
87
|
)
|
|
77
|
-
|
|
88
|
+
|
|
78
89
|
if result.returncode == 0:
|
|
79
90
|
# Check if output contains success message
|
|
80
91
|
if "started successfully" in result.stdout.lower():
|
|
81
92
|
print(result.stdout)
|
|
82
93
|
return True
|
|
83
94
|
# Even if no explicit success message, check if process is running
|
|
84
|
-
|
|
95
|
+
if self.daemon_pidfile_path.exists():
|
|
85
96
|
print("Socket.IO daemon server started")
|
|
86
97
|
return True
|
|
87
98
|
else:
|
|
@@ -91,44 +102,43 @@ try:
|
|
|
91
102
|
print("Trying standalone method...")
|
|
92
103
|
except Exception as e:
|
|
93
104
|
print(f"Error running daemon: {e}")
|
|
94
|
-
|
|
95
|
-
|
|
105
|
+
|
|
96
106
|
# Fall back to parent implementation
|
|
97
107
|
return super().start_server(port=port, host=host, server_id=server_id)
|
|
98
|
-
|
|
108
|
+
|
|
99
109
|
def stop_server(self, port: int = None) -> bool:
|
|
100
110
|
"""Stop Socket.IO server, handling daemon-style servers.
|
|
101
|
-
|
|
111
|
+
|
|
102
112
|
WHY: The daemon server needs special handling for stopping.
|
|
103
113
|
"""
|
|
104
114
|
# Check if daemon is running
|
|
105
115
|
if self.daemon_pidfile_path.exists():
|
|
106
|
-
print(
|
|
116
|
+
print("🔄 Stopping daemon server", end="")
|
|
107
117
|
try:
|
|
108
118
|
with open(self.daemon_pidfile_path) as f:
|
|
109
119
|
pid = int(f.read().strip())
|
|
110
120
|
print(f" (PID: {pid})...")
|
|
111
|
-
|
|
121
|
+
|
|
112
122
|
result = subprocess.run(
|
|
113
123
|
[sys.executable, str(self.daemon_script), "stop"],
|
|
114
124
|
capture_output=True,
|
|
115
|
-
text=True
|
|
125
|
+
text=True,
|
|
126
|
+
check=False,
|
|
116
127
|
)
|
|
117
|
-
|
|
128
|
+
|
|
118
129
|
if result.returncode == 0:
|
|
119
130
|
print("✅ Daemon server stopped successfully")
|
|
120
131
|
return True
|
|
121
|
-
|
|
122
|
-
print(f"❌ Failed to stop daemon: {result.stderr}")
|
|
132
|
+
print(f"❌ Failed to stop daemon: {result.stderr}")
|
|
123
133
|
except Exception as e:
|
|
124
134
|
print(f"❌ Error stopping daemon: {e}")
|
|
125
|
-
|
|
135
|
+
|
|
126
136
|
# Fall back to parent implementation for non-daemon servers
|
|
127
137
|
return super().stop_server(port=port)
|
|
128
|
-
|
|
138
|
+
|
|
129
139
|
def restart_server(self, port: int = None) -> bool:
|
|
130
140
|
"""Restart Socket.IO server, handling daemon-style servers.
|
|
131
|
-
|
|
141
|
+
|
|
132
142
|
WHY: The daemon server needs special handling for restarting.
|
|
133
143
|
"""
|
|
134
144
|
# Check if daemon is running
|
|
@@ -136,172 +146,180 @@ try:
|
|
|
136
146
|
try:
|
|
137
147
|
with open(self.daemon_pidfile_path) as f:
|
|
138
148
|
pid = int(f.read().strip())
|
|
139
|
-
|
|
149
|
+
|
|
140
150
|
print(f"🔄 Stopping daemon server (PID: {pid})...")
|
|
141
|
-
|
|
151
|
+
|
|
142
152
|
# Stop the daemon
|
|
143
153
|
result = subprocess.run(
|
|
144
154
|
[sys.executable, str(self.daemon_script), "stop"],
|
|
145
155
|
capture_output=True,
|
|
146
|
-
text=True
|
|
156
|
+
text=True,
|
|
157
|
+
check=False,
|
|
147
158
|
)
|
|
148
|
-
|
|
159
|
+
|
|
149
160
|
if result.returncode == 0:
|
|
150
161
|
print("✅ Daemon server stopped successfully")
|
|
151
162
|
# Wait a moment for clean shutdown
|
|
152
163
|
import time
|
|
164
|
+
|
|
153
165
|
time.sleep(1)
|
|
154
|
-
|
|
166
|
+
|
|
155
167
|
# Start it again
|
|
156
168
|
return self.start_server(port=port)
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
169
|
+
print(f"❌ Failed to stop daemon: {result.stderr}")
|
|
170
|
+
return False
|
|
171
|
+
|
|
161
172
|
except Exception as e:
|
|
162
173
|
print(f"❌ Error restarting daemon: {e}")
|
|
163
174
|
return False
|
|
164
175
|
else:
|
|
165
|
-
print(
|
|
166
|
-
|
|
176
|
+
print(
|
|
177
|
+
f"❌ No daemon server found (no PID file at {self.daemon_pidfile_path})"
|
|
178
|
+
)
|
|
179
|
+
|
|
167
180
|
# Fall back to parent implementation for non-daemon servers
|
|
168
181
|
return super().restart_server(port=port)
|
|
169
|
-
|
|
182
|
+
|
|
170
183
|
# Re-export for use by CLI
|
|
171
184
|
__all__ = ["ServerManager"]
|
|
172
|
-
|
|
173
|
-
except ImportError
|
|
185
|
+
|
|
186
|
+
except ImportError:
|
|
174
187
|
# Fallback: If tools/admin version not available, provide basic implementation
|
|
175
188
|
# that delegates to socketio_daemon.py
|
|
176
|
-
|
|
189
|
+
|
|
177
190
|
import subprocess
|
|
178
|
-
import
|
|
179
|
-
|
|
180
|
-
from typing import Dict, List, Optional, Any
|
|
181
|
-
|
|
191
|
+
from typing import Any, Dict, List, Optional
|
|
192
|
+
|
|
182
193
|
class ServerManager:
|
|
183
194
|
"""Fallback ServerManager that uses socketio_daemon.py.
|
|
184
|
-
|
|
195
|
+
|
|
185
196
|
WHY: This fallback ensures the monitor CLI command works even if
|
|
186
197
|
the full ServerManager from tools/admin is not available. It provides
|
|
187
198
|
basic functionality by delegating to the socketio_daemon.py script.
|
|
188
199
|
"""
|
|
189
|
-
|
|
200
|
+
|
|
190
201
|
def __init__(self):
|
|
191
202
|
self.daemon_script = script_dir / "socketio_daemon.py"
|
|
192
203
|
self.base_port = 8765
|
|
193
|
-
|
|
194
|
-
def start_server(
|
|
195
|
-
|
|
204
|
+
|
|
205
|
+
def start_server(
|
|
206
|
+
self,
|
|
207
|
+
port: Optional[int] = None,
|
|
208
|
+
host: str = "localhost",
|
|
209
|
+
server_id: Optional[str] = None,
|
|
210
|
+
) -> bool:
|
|
196
211
|
"""Start the Socket.IO server using daemon script.
|
|
197
|
-
|
|
212
|
+
|
|
198
213
|
WHY: The daemon script handles port selection and process management,
|
|
199
214
|
so we delegate to it for starting servers.
|
|
200
215
|
"""
|
|
201
216
|
if port and port != self.base_port:
|
|
202
217
|
print(f"Note: Daemon only supports default port {self.base_port}")
|
|
203
218
|
print(f"Starting on port {self.base_port} instead...")
|
|
204
|
-
|
|
219
|
+
|
|
205
220
|
try:
|
|
206
221
|
result = subprocess.run(
|
|
207
222
|
[sys.executable, str(self.daemon_script), "start"],
|
|
208
223
|
capture_output=True,
|
|
209
|
-
text=True
|
|
224
|
+
text=True,
|
|
225
|
+
check=False,
|
|
210
226
|
)
|
|
211
|
-
|
|
227
|
+
|
|
212
228
|
if result.returncode == 0:
|
|
213
229
|
print("Socket.IO server started successfully")
|
|
214
230
|
return True
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
231
|
+
print(f"Failed to start server: {result.stderr}")
|
|
232
|
+
return False
|
|
233
|
+
|
|
219
234
|
except Exception as e:
|
|
220
235
|
print(f"Error starting server: {e}")
|
|
221
236
|
return False
|
|
222
|
-
|
|
223
|
-
def stop_server(self, port: int = None) -> bool:
|
|
237
|
+
|
|
238
|
+
def stop_server(self, port: Optional[int] = None) -> bool:
|
|
224
239
|
"""Stop the Socket.IO server using daemon script."""
|
|
225
240
|
if port and port != self.base_port:
|
|
226
241
|
print(f"Note: Daemon only supports default port {self.base_port}")
|
|
227
|
-
|
|
242
|
+
|
|
228
243
|
try:
|
|
229
244
|
result = subprocess.run(
|
|
230
245
|
[sys.executable, str(self.daemon_script), "stop"],
|
|
231
246
|
capture_output=True,
|
|
232
|
-
text=True
|
|
247
|
+
text=True,
|
|
248
|
+
check=False,
|
|
233
249
|
)
|
|
234
|
-
|
|
250
|
+
|
|
235
251
|
if result.returncode == 0:
|
|
236
252
|
print("Socket.IO server stopped successfully")
|
|
237
253
|
return True
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
254
|
+
print(f"Failed to stop server: {result.stderr}")
|
|
255
|
+
return False
|
|
256
|
+
|
|
242
257
|
except Exception as e:
|
|
243
258
|
print(f"Error stopping server: {e}")
|
|
244
259
|
return False
|
|
245
|
-
|
|
246
|
-
def restart_server(self, port: int = None) -> bool:
|
|
260
|
+
|
|
261
|
+
def restart_server(self, port: Optional[int] = None) -> bool:
|
|
247
262
|
"""Restart the Socket.IO server using daemon script."""
|
|
248
263
|
if port and port != self.base_port:
|
|
249
264
|
print(f"Note: Daemon only supports default port {self.base_port}")
|
|
250
|
-
|
|
265
|
+
|
|
251
266
|
try:
|
|
252
267
|
result = subprocess.run(
|
|
253
268
|
[sys.executable, str(self.daemon_script), "restart"],
|
|
254
269
|
capture_output=True,
|
|
255
|
-
text=True
|
|
270
|
+
text=True,
|
|
271
|
+
check=False,
|
|
256
272
|
)
|
|
257
|
-
|
|
273
|
+
|
|
258
274
|
if result.returncode == 0:
|
|
259
275
|
print("Socket.IO server restarted successfully")
|
|
260
276
|
return True
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
277
|
+
print(f"Failed to restart server: {result.stderr}")
|
|
278
|
+
return False
|
|
279
|
+
|
|
265
280
|
except Exception as e:
|
|
266
281
|
print(f"Error restarting server: {e}")
|
|
267
282
|
return False
|
|
268
|
-
|
|
283
|
+
|
|
269
284
|
def list_running_servers(self) -> List[Dict[str, Any]]:
|
|
270
285
|
"""List running servers using daemon script status."""
|
|
271
286
|
try:
|
|
272
287
|
result = subprocess.run(
|
|
273
288
|
[sys.executable, str(self.daemon_script), "status"],
|
|
274
289
|
capture_output=True,
|
|
275
|
-
text=True
|
|
290
|
+
text=True,
|
|
291
|
+
check=False,
|
|
276
292
|
)
|
|
277
|
-
|
|
293
|
+
|
|
278
294
|
# Parse status output to determine if server is running
|
|
279
295
|
if "is running" in result.stdout:
|
|
280
296
|
# Extract port from output if possible
|
|
281
297
|
port = self.base_port
|
|
282
|
-
for line in result.stdout.split(
|
|
298
|
+
for line in result.stdout.split("\n"):
|
|
283
299
|
if "port" in line.lower():
|
|
284
300
|
try:
|
|
285
301
|
# Try to extract port number
|
|
286
302
|
import re
|
|
287
|
-
|
|
303
|
+
|
|
304
|
+
match = re.search(r"port\s+(\d+)", line.lower())
|
|
288
305
|
if match:
|
|
289
306
|
port = int(match.group(1))
|
|
290
307
|
except:
|
|
291
308
|
pass
|
|
292
|
-
|
|
293
|
-
return [
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
309
|
+
|
|
310
|
+
return [
|
|
311
|
+
{
|
|
312
|
+
"port": port,
|
|
313
|
+
"server_id": "daemon-socketio",
|
|
314
|
+
"status": "running",
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
return []
|
|
318
|
+
|
|
301
319
|
except Exception as e:
|
|
302
320
|
print(f"Error checking server status: {e}")
|
|
303
321
|
return []
|
|
304
|
-
|
|
322
|
+
|
|
305
323
|
def get_server_info(self, port: int) -> Optional[Dict[str, Any]]:
|
|
306
324
|
"""Get information about a server on a specific port."""
|
|
307
325
|
servers = self.list_running_servers()
|
|
@@ -316,13 +334,16 @@ if __name__ == "__main__":
|
|
|
316
334
|
try:
|
|
317
335
|
# Try to run the actual script from tools/admin
|
|
318
336
|
import subprocess
|
|
337
|
+
|
|
319
338
|
tools_script = tools_admin_dir / "socketio_server_manager.py"
|
|
320
339
|
if tools_script.exists():
|
|
321
|
-
subprocess.run(
|
|
340
|
+
subprocess.run(
|
|
341
|
+
[sys.executable, str(tools_script)] + sys.argv[1:], check=False
|
|
342
|
+
)
|
|
322
343
|
else:
|
|
323
344
|
print("Socket.IO server manager not found in tools/admin")
|
|
324
345
|
print("Please ensure claude-mpm is properly installed")
|
|
325
346
|
sys.exit(1)
|
|
326
347
|
except Exception as e:
|
|
327
348
|
print(f"Error running server manager: {e}")
|
|
328
|
-
sys.exit(1)
|
|
349
|
+
sys.exit(1)
|
claude_mpm/services/__init__.py
CHANGED
|
@@ -19,91 +19,91 @@ def __getattr__(name):
|
|
|
19
19
|
from .ticket_manager import TicketManager
|
|
20
20
|
|
|
21
21
|
return TicketManager
|
|
22
|
-
|
|
22
|
+
if name == "AgentDeploymentService":
|
|
23
23
|
# Use correct path
|
|
24
24
|
from .agents.deployment import AgentDeploymentService
|
|
25
25
|
|
|
26
26
|
return AgentDeploymentService
|
|
27
|
-
|
|
27
|
+
if name == "AgentMemoryManager":
|
|
28
28
|
from .agents.memory import AgentMemoryManager
|
|
29
29
|
|
|
30
30
|
return AgentMemoryManager
|
|
31
|
-
|
|
31
|
+
if name == "get_memory_manager":
|
|
32
32
|
from .agents.memory import get_memory_manager
|
|
33
33
|
|
|
34
34
|
return get_memory_manager
|
|
35
35
|
# Add backward compatibility for other agent services
|
|
36
|
-
|
|
36
|
+
if name == "AgentRegistry":
|
|
37
37
|
# Use correct path
|
|
38
38
|
from .agents.registry import AgentRegistry
|
|
39
39
|
|
|
40
40
|
return AgentRegistry
|
|
41
|
-
|
|
41
|
+
if name == "AgentLifecycleManager":
|
|
42
42
|
from .agents.deployment import AgentLifecycleManager
|
|
43
43
|
|
|
44
44
|
return AgentLifecycleManager
|
|
45
|
-
|
|
45
|
+
if name == "AgentManager":
|
|
46
46
|
from .agents.management import AgentManager
|
|
47
47
|
|
|
48
48
|
return AgentManager
|
|
49
|
-
|
|
49
|
+
if name == "AgentCapabilitiesGenerator":
|
|
50
50
|
from .agents.management import AgentCapabilitiesGenerator
|
|
51
51
|
|
|
52
52
|
return AgentCapabilitiesGenerator
|
|
53
|
-
|
|
53
|
+
if name == "AgentModificationTracker":
|
|
54
54
|
from .agents.registry import AgentModificationTracker
|
|
55
55
|
|
|
56
56
|
return AgentModificationTracker
|
|
57
|
-
|
|
57
|
+
if name == "AgentPersistenceService":
|
|
58
58
|
from .agents.memory import AgentPersistenceService
|
|
59
59
|
|
|
60
60
|
return AgentPersistenceService
|
|
61
|
-
|
|
61
|
+
if name == "AgentProfileLoader":
|
|
62
62
|
from .agents.loading import AgentProfileLoader
|
|
63
63
|
|
|
64
64
|
return AgentProfileLoader
|
|
65
|
-
|
|
65
|
+
if name == "AgentVersionManager":
|
|
66
66
|
from .agents.deployment import AgentVersionManager
|
|
67
67
|
|
|
68
68
|
return AgentVersionManager
|
|
69
|
-
|
|
69
|
+
if name == "BaseAgentManager":
|
|
70
70
|
from .agents.loading import BaseAgentManager
|
|
71
71
|
|
|
72
72
|
return BaseAgentManager
|
|
73
|
-
|
|
73
|
+
if name == "DeployedAgentDiscovery":
|
|
74
74
|
from .agents.registry import DeployedAgentDiscovery
|
|
75
75
|
|
|
76
76
|
return DeployedAgentDiscovery
|
|
77
|
-
|
|
77
|
+
if name == "FrameworkAgentLoader":
|
|
78
78
|
from .agents.loading import FrameworkAgentLoader
|
|
79
79
|
|
|
80
80
|
return FrameworkAgentLoader
|
|
81
|
-
|
|
81
|
+
if name == "HookService":
|
|
82
82
|
from .hook_service import HookService
|
|
83
83
|
|
|
84
84
|
return HookService
|
|
85
|
-
|
|
85
|
+
if name == "ProjectAnalyzer":
|
|
86
86
|
from .project.analyzer import ProjectAnalyzer
|
|
87
87
|
|
|
88
88
|
return ProjectAnalyzer
|
|
89
|
-
|
|
89
|
+
if name == "AdvancedHealthMonitor":
|
|
90
90
|
from .infrastructure.monitoring import AdvancedHealthMonitor
|
|
91
91
|
|
|
92
92
|
return AdvancedHealthMonitor
|
|
93
|
-
|
|
93
|
+
if name == "HealthMonitor":
|
|
94
94
|
# For backward compatibility, return AdvancedHealthMonitor
|
|
95
95
|
# Note: There's also a different HealthMonitor in infrastructure.health_monitor
|
|
96
96
|
from .infrastructure.monitoring import AdvancedHealthMonitor
|
|
97
97
|
|
|
98
98
|
return AdvancedHealthMonitor
|
|
99
|
-
|
|
99
|
+
if name == "RecoveryManager":
|
|
100
100
|
try:
|
|
101
101
|
from .recovery_manager import RecoveryManager
|
|
102
102
|
|
|
103
103
|
return RecoveryManager
|
|
104
104
|
except ImportError:
|
|
105
105
|
raise AttributeError(f"Recovery management not available: {name}")
|
|
106
|
-
elif name
|
|
106
|
+
elif name in {"StandaloneSocketIOServer", "SocketIOServer"}:
|
|
107
107
|
from .socketio_server import SocketIOServer
|
|
108
108
|
|
|
109
109
|
return SocketIOServer
|
|
@@ -187,50 +187,50 @@ def __getattr__(name):
|
|
|
187
187
|
|
|
188
188
|
|
|
189
189
|
__all__ = [
|
|
190
|
-
"TicketManager",
|
|
191
|
-
"AgentDeploymentService",
|
|
192
|
-
"AgentMemoryManager",
|
|
193
|
-
"get_memory_manager",
|
|
194
|
-
"HookService",
|
|
195
|
-
"ProjectAnalyzer",
|
|
196
190
|
"AdvancedHealthMonitor",
|
|
197
|
-
"
|
|
198
|
-
"
|
|
199
|
-
"StandaloneSocketIOServer",
|
|
200
|
-
"SocketIOServer", # New alias
|
|
201
|
-
# Additional agent services for backward compatibility
|
|
202
|
-
"AgentRegistry",
|
|
191
|
+
"AgentCapabilitiesGenerator",
|
|
192
|
+
"AgentDeploymentService",
|
|
203
193
|
"AgentLifecycleManager",
|
|
204
|
-
"AgentManager",
|
|
205
194
|
"AgentManagementService", # New service
|
|
206
|
-
"
|
|
195
|
+
"AgentManager",
|
|
196
|
+
"AgentMemoryManager",
|
|
207
197
|
"AgentModificationTracker",
|
|
208
198
|
"AgentPersistenceService",
|
|
209
199
|
"AgentProfileLoader",
|
|
200
|
+
# Additional agent services for backward compatibility
|
|
201
|
+
"AgentRegistry",
|
|
210
202
|
"AgentVersionManager",
|
|
211
203
|
"BaseAgentManager",
|
|
204
|
+
"BaseMCPService",
|
|
205
|
+
# Core exports
|
|
206
|
+
"BaseService",
|
|
212
207
|
"DeployedAgentDiscovery",
|
|
213
208
|
"FrameworkAgentLoader",
|
|
214
|
-
#
|
|
215
|
-
"
|
|
209
|
+
"HealthMonitor", # New alias
|
|
210
|
+
"HookService",
|
|
216
211
|
# Infrastructure services
|
|
217
212
|
"LoggingService", # New service
|
|
218
|
-
|
|
219
|
-
"SocketIOClientManager", # New service
|
|
220
|
-
# Memory services (backward compatibility)
|
|
221
|
-
"MemoryBuilder",
|
|
222
|
-
"MemoryRouter",
|
|
223
|
-
"MemoryOptimizer",
|
|
224
|
-
"SimpleCacheService",
|
|
225
|
-
"SharedPromptCache",
|
|
213
|
+
"MCPConfigLoader",
|
|
226
214
|
# MCP Gateway services
|
|
227
215
|
"MCPConfiguration",
|
|
228
|
-
"MCPConfigLoader",
|
|
229
216
|
"MCPServer",
|
|
230
217
|
"MCPToolRegistry",
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
"
|
|
234
|
-
"
|
|
218
|
+
# Memory services (backward compatibility)
|
|
219
|
+
"MemoryBuilder",
|
|
220
|
+
"MemoryOptimizer",
|
|
221
|
+
"MemoryRouter",
|
|
222
|
+
"ProjectAnalyzer",
|
|
223
|
+
# Project services
|
|
224
|
+
"ProjectRegistry", # New service
|
|
225
|
+
"RecoveryManager",
|
|
226
|
+
"SharedPromptCache",
|
|
227
|
+
"SimpleCacheService",
|
|
235
228
|
"SingletonService",
|
|
229
|
+
# Communication services
|
|
230
|
+
"SocketIOClientManager", # New service
|
|
231
|
+
"SocketIOServer", # New alias
|
|
232
|
+
"StandaloneSocketIOServer",
|
|
233
|
+
"SyncBaseService",
|
|
234
|
+
"TicketManager",
|
|
235
|
+
"get_memory_manager",
|
|
236
236
|
]
|