claude-mpm 4.1.1__py3-none-any.whl → 4.1.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/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/engineer.json +33 -11
- 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 +50 -2
- 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 +648 -1098
- 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 +339 -967
- claude_mpm/cli/commands/monitor.py +117 -88
- claude_mpm/cli/commands/run.py +233 -542
- 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 +280 -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 +22 -29
- 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 +500 -680
- 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 -17
- 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 +99 -154
- claude_mpm/hooks/claude_hooks/hook_handler.py +110 -720
- claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +104 -77
- claude_mpm/hooks/claude_hooks/hook_handler_original.py +1040 -0
- claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +347 -0
- 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/services/__init__.py +13 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +190 -0
- claude_mpm/hooks/claude_hooks/services/duplicate_detector.py +106 -0
- claude_mpm/hooks/claude_hooks/services/state_manager.py +282 -0
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +374 -0
- 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 +129 -511
- 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/base_agent_locator.py +132 -0
- 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_results_manager.py +185 -0
- 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/single_agent_deployer.py +315 -0
- 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 +157 -503
- 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/memory_categorization_service.py +165 -0
- claude_mpm/services/agents/memory/memory_file_service.py +103 -0
- claude_mpm/services/agents/memory/memory_format_service.py +201 -0
- claude_mpm/services/agents/memory/memory_limits_service.py +99 -0
- claude_mpm/services/agents/memory/template_generator.py +4 -6
- claude_mpm/services/agents/registry/__init__.py +11 -7
- 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/cli/__init__.py +18 -0
- claude_mpm/services/cli/agent_cleanup_service.py +407 -0
- claude_mpm/services/cli/agent_dependency_service.py +395 -0
- claude_mpm/services/cli/agent_listing_service.py +463 -0
- claude_mpm/services/cli/agent_output_formatter.py +605 -0
- claude_mpm/services/cli/agent_validation_service.py +589 -0
- claude_mpm/services/cli/dashboard_launcher.py +424 -0
- claude_mpm/services/cli/memory_crud_service.py +617 -0
- claude_mpm/services/cli/memory_output_formatter.py +604 -0
- claude_mpm/services/cli/session_manager.py +513 -0
- claude_mpm/services/cli/socketio_manager.py +498 -0
- claude_mpm/services/cli/startup_checker.py +370 -0
- 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/cache_manager.py +311 -0
- 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/core/memory_manager.py +637 -0
- claude_mpm/services/core/path_resolver.py +498 -0
- claude_mpm/services/core/service_container.py +520 -0
- claude_mpm/services/core/service_interfaces.py +436 -0
- 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 +152 -97
- 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.1.dist-info → claude_mpm-4.1.3.dist-info}/METADATA +1 -1
- claude_mpm-4.1.3.dist-info/RECORD +528 -0
- claude_mpm/cli/commands/run_config_checker.py +0 -160
- claude_mpm-4.1.1.dist-info/RECORD +0 -494
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.3.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.3.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.3.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.3.dist-info}/top_level.txt +0 -0
claude_mpm/services/core/base.py
CHANGED
|
@@ -9,7 +9,6 @@ and lifecycle management.
|
|
|
9
9
|
Part of TSK-0046: Service Layer Architecture Reorganization
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
|
-
import logging
|
|
13
12
|
from abc import ABC, abstractmethod
|
|
14
13
|
from typing import Any, Dict, Optional
|
|
15
14
|
|
|
@@ -56,7 +55,6 @@ class BaseService(ABC):
|
|
|
56
55
|
Returns:
|
|
57
56
|
True if initialization successful, False otherwise
|
|
58
57
|
"""
|
|
59
|
-
pass
|
|
60
58
|
|
|
61
59
|
@abstractmethod
|
|
62
60
|
async def shutdown(self) -> None:
|
|
@@ -65,7 +63,6 @@ class BaseService(ABC):
|
|
|
65
63
|
|
|
66
64
|
This method should clean up any resources held by the service.
|
|
67
65
|
"""
|
|
68
|
-
pass
|
|
69
66
|
|
|
70
67
|
def get_config(self, key: str, default: Any = None) -> Any:
|
|
71
68
|
"""
|
|
@@ -157,7 +154,6 @@ class SyncBaseService(ABC):
|
|
|
157
154
|
Returns:
|
|
158
155
|
True if initialization successful, False otherwise
|
|
159
156
|
"""
|
|
160
|
-
pass
|
|
161
157
|
|
|
162
158
|
@abstractmethod
|
|
163
159
|
def shutdown(self) -> None:
|
|
@@ -166,7 +162,6 @@ class SyncBaseService(ABC):
|
|
|
166
162
|
|
|
167
163
|
This method should clean up any resources held by the service.
|
|
168
164
|
"""
|
|
169
|
-
pass
|
|
170
165
|
|
|
171
166
|
def get_config(self, key: str, default: Any = None) -> Any:
|
|
172
167
|
"""
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Cache Manager Service for Framework Loader
|
|
3
|
+
==========================================
|
|
4
|
+
|
|
5
|
+
WHY: This service extracts and centralizes cache management logic from the FrameworkLoader,
|
|
6
|
+
providing a clean interface for managing multiple cache types with different TTLs.
|
|
7
|
+
|
|
8
|
+
DESIGN DECISION: Built on top of the existing FileSystemCache infrastructure while
|
|
9
|
+
providing a specialized interface for framework-specific caching needs.
|
|
10
|
+
|
|
11
|
+
EXTRACTED FROM: core/framework_loader.py (lines 89-140)
|
|
12
|
+
- Reduces FrameworkLoader complexity by ~50 lines
|
|
13
|
+
- Provides thread-safe, type-specific cache management
|
|
14
|
+
|
|
15
|
+
NOTE: The ICacheManager interface has been moved to service_interfaces.py for
|
|
16
|
+
better organization and to support dependency injection.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import threading
|
|
20
|
+
import time
|
|
21
|
+
from typing import Any, Dict, Optional, Set, Tuple
|
|
22
|
+
|
|
23
|
+
from claude_mpm.core.cache import FileSystemCache
|
|
24
|
+
from claude_mpm.core.logger import get_logger
|
|
25
|
+
|
|
26
|
+
# Import interface from consolidated location
|
|
27
|
+
from .service_interfaces import ICacheManager
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class CacheManager(ICacheManager):
|
|
31
|
+
"""
|
|
32
|
+
Centralized cache management service for framework loader.
|
|
33
|
+
|
|
34
|
+
This service manages multiple cache types with different TTLs:
|
|
35
|
+
- Agent capabilities (60s TTL)
|
|
36
|
+
- Deployed agents (30s TTL)
|
|
37
|
+
- Agent metadata (60s TTL)
|
|
38
|
+
- Memories (60s TTL)
|
|
39
|
+
|
|
40
|
+
Thread-safe implementation using locks for concurrent access.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
# Default TTL values (in seconds)
|
|
44
|
+
DEFAULT_CAPABILITIES_TTL = 60
|
|
45
|
+
DEFAULT_DEPLOYED_AGENTS_TTL = 30
|
|
46
|
+
DEFAULT_METADATA_TTL = 60
|
|
47
|
+
DEFAULT_MEMORIES_TTL = 60
|
|
48
|
+
|
|
49
|
+
def __init__(
|
|
50
|
+
self,
|
|
51
|
+
capabilities_ttl: float = DEFAULT_CAPABILITIES_TTL,
|
|
52
|
+
deployed_agents_ttl: float = DEFAULT_DEPLOYED_AGENTS_TTL,
|
|
53
|
+
metadata_ttl: float = DEFAULT_METADATA_TTL,
|
|
54
|
+
memories_ttl: float = DEFAULT_MEMORIES_TTL,
|
|
55
|
+
):
|
|
56
|
+
"""
|
|
57
|
+
Initialize cache manager with configurable TTLs.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
capabilities_ttl: TTL for agent capabilities cache
|
|
61
|
+
deployed_agents_ttl: TTL for deployed agents cache
|
|
62
|
+
metadata_ttl: TTL for agent metadata cache
|
|
63
|
+
memories_ttl: TTL for memories cache
|
|
64
|
+
"""
|
|
65
|
+
self.logger = get_logger("cache_manager")
|
|
66
|
+
|
|
67
|
+
# TTL configuration
|
|
68
|
+
self.capabilities_ttl = capabilities_ttl
|
|
69
|
+
self.deployed_agents_ttl = deployed_agents_ttl
|
|
70
|
+
self.metadata_ttl = metadata_ttl
|
|
71
|
+
self.memories_ttl = memories_ttl
|
|
72
|
+
|
|
73
|
+
# Cache storage with timestamps
|
|
74
|
+
self._capabilities_cache: Optional[str] = None
|
|
75
|
+
self._capabilities_cache_time: float = 0
|
|
76
|
+
|
|
77
|
+
self._deployed_agents_cache: Optional[Set[str]] = None
|
|
78
|
+
self._deployed_agents_cache_time: float = 0
|
|
79
|
+
|
|
80
|
+
self._agent_metadata_cache: Dict[
|
|
81
|
+
str, Tuple[Optional[Dict[str, Any]], float]
|
|
82
|
+
] = {}
|
|
83
|
+
|
|
84
|
+
self._memories_cache: Optional[Dict[str, Any]] = None
|
|
85
|
+
self._memories_cache_time: float = 0
|
|
86
|
+
|
|
87
|
+
# Thread safety
|
|
88
|
+
self._lock = threading.RLock()
|
|
89
|
+
|
|
90
|
+
# Underlying file system cache (optional, for persistence)
|
|
91
|
+
self._fs_cache = FileSystemCache(
|
|
92
|
+
max_size_mb=50, # 50MB for framework caches
|
|
93
|
+
default_ttl=max(
|
|
94
|
+
capabilities_ttl, deployed_agents_ttl, metadata_ttl, memories_ttl
|
|
95
|
+
),
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
self.logger.debug(
|
|
99
|
+
f"Cache manager initialized with TTLs: "
|
|
100
|
+
f"capabilities={capabilities_ttl}s, "
|
|
101
|
+
f"deployed_agents={deployed_agents_ttl}s, "
|
|
102
|
+
f"metadata={metadata_ttl}s, "
|
|
103
|
+
f"memories={memories_ttl}s"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def is_cache_valid(self, cache_time: float, ttl: float) -> bool:
|
|
107
|
+
"""Check if a cache entry is still valid based on its timestamp and TTL."""
|
|
108
|
+
current_time = time.time()
|
|
109
|
+
age = current_time - cache_time
|
|
110
|
+
return age < ttl
|
|
111
|
+
|
|
112
|
+
# Agent capabilities cache
|
|
113
|
+
def get_capabilities(self) -> Optional[str]:
|
|
114
|
+
"""Get cached agent capabilities."""
|
|
115
|
+
with self._lock:
|
|
116
|
+
if self._capabilities_cache is not None and self.is_cache_valid(
|
|
117
|
+
self._capabilities_cache_time, self.capabilities_ttl
|
|
118
|
+
):
|
|
119
|
+
age = time.time() - self._capabilities_cache_time
|
|
120
|
+
self.logger.debug(f"Cache hit: agent capabilities (age: {age:.1f}s)")
|
|
121
|
+
return self._capabilities_cache
|
|
122
|
+
|
|
123
|
+
self.logger.debug("Cache miss: agent capabilities")
|
|
124
|
+
return None
|
|
125
|
+
|
|
126
|
+
def set_capabilities(self, value: str) -> None:
|
|
127
|
+
"""Set agent capabilities cache."""
|
|
128
|
+
with self._lock:
|
|
129
|
+
self._capabilities_cache = value
|
|
130
|
+
self._capabilities_cache_time = time.time()
|
|
131
|
+
self.logger.debug("Updated agent capabilities cache")
|
|
132
|
+
|
|
133
|
+
# Deployed agents cache
|
|
134
|
+
def get_deployed_agents(self) -> Optional[Set[str]]:
|
|
135
|
+
"""Get cached deployed agents set."""
|
|
136
|
+
with self._lock:
|
|
137
|
+
if self._deployed_agents_cache is not None and self.is_cache_valid(
|
|
138
|
+
self._deployed_agents_cache_time, self.deployed_agents_ttl
|
|
139
|
+
):
|
|
140
|
+
age = time.time() - self._deployed_agents_cache_time
|
|
141
|
+
self.logger.debug(f"Cache hit: deployed agents (age: {age:.1f}s)")
|
|
142
|
+
return (
|
|
143
|
+
self._deployed_agents_cache.copy()
|
|
144
|
+
) # Return a copy to prevent external modification
|
|
145
|
+
|
|
146
|
+
self.logger.debug("Cache miss: deployed agents")
|
|
147
|
+
return None
|
|
148
|
+
|
|
149
|
+
def set_deployed_agents(self, agents: Set[str]) -> None:
|
|
150
|
+
"""Set deployed agents cache."""
|
|
151
|
+
with self._lock:
|
|
152
|
+
self._deployed_agents_cache = agents.copy() # Store a copy
|
|
153
|
+
self._deployed_agents_cache_time = time.time()
|
|
154
|
+
self.logger.debug(
|
|
155
|
+
f"Updated deployed agents cache with {len(agents)} agents"
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
# Agent metadata cache
|
|
159
|
+
def get_agent_metadata(
|
|
160
|
+
self, agent_file: str
|
|
161
|
+
) -> Optional[Tuple[Optional[Dict[str, Any]], float]]:
|
|
162
|
+
"""Get cached agent metadata for a specific file."""
|
|
163
|
+
with self._lock:
|
|
164
|
+
if agent_file in self._agent_metadata_cache:
|
|
165
|
+
cached_data, cached_mtime = self._agent_metadata_cache[agent_file]
|
|
166
|
+
# Check if cache is still valid
|
|
167
|
+
if self.is_cache_valid(cached_mtime, self.metadata_ttl):
|
|
168
|
+
self.logger.debug(f"Cache hit: metadata for {agent_file}")
|
|
169
|
+
return cached_data, cached_mtime
|
|
170
|
+
|
|
171
|
+
self.logger.debug(f"Cache miss: metadata for {agent_file}")
|
|
172
|
+
return None
|
|
173
|
+
|
|
174
|
+
def set_agent_metadata(
|
|
175
|
+
self, agent_file: str, metadata: Optional[Dict[str, Any]], mtime: float
|
|
176
|
+
) -> None:
|
|
177
|
+
"""Set agent metadata cache for a specific file."""
|
|
178
|
+
with self._lock:
|
|
179
|
+
self._agent_metadata_cache[agent_file] = (metadata, mtime)
|
|
180
|
+
self.logger.debug(f"Updated metadata cache for {agent_file}")
|
|
181
|
+
|
|
182
|
+
# Memories cache
|
|
183
|
+
def get_memories(self) -> Optional[Dict[str, Any]]:
|
|
184
|
+
"""Get cached memories."""
|
|
185
|
+
with self._lock:
|
|
186
|
+
if self._memories_cache is not None and self.is_cache_valid(
|
|
187
|
+
self._memories_cache_time, self.memories_ttl
|
|
188
|
+
):
|
|
189
|
+
age = time.time() - self._memories_cache_time
|
|
190
|
+
self.logger.debug(f"Cache hit: memories (age: {age:.1f}s)")
|
|
191
|
+
return self._memories_cache.copy() # Return a copy
|
|
192
|
+
|
|
193
|
+
self.logger.debug("Cache miss: memories")
|
|
194
|
+
return None
|
|
195
|
+
|
|
196
|
+
def set_memories(self, memories: Dict[str, Any]) -> None:
|
|
197
|
+
"""Set memories cache."""
|
|
198
|
+
with self._lock:
|
|
199
|
+
self._memories_cache = memories.copy() # Store a copy
|
|
200
|
+
self._memories_cache_time = time.time()
|
|
201
|
+
self.logger.debug("Updated memories cache")
|
|
202
|
+
|
|
203
|
+
# Cache clearing methods
|
|
204
|
+
def clear_all(self) -> None:
|
|
205
|
+
"""Clear all caches."""
|
|
206
|
+
with self._lock:
|
|
207
|
+
self.logger.info("Clearing all caches")
|
|
208
|
+
|
|
209
|
+
# Clear capabilities
|
|
210
|
+
self._capabilities_cache = None
|
|
211
|
+
self._capabilities_cache_time = 0
|
|
212
|
+
|
|
213
|
+
# Clear deployed agents
|
|
214
|
+
self._deployed_agents_cache = None
|
|
215
|
+
self._deployed_agents_cache_time = 0
|
|
216
|
+
|
|
217
|
+
# Clear metadata
|
|
218
|
+
self._agent_metadata_cache.clear()
|
|
219
|
+
|
|
220
|
+
# Clear memories
|
|
221
|
+
self._memories_cache = None
|
|
222
|
+
self._memories_cache_time = 0
|
|
223
|
+
|
|
224
|
+
# Clear underlying file system cache
|
|
225
|
+
self._fs_cache.clear()
|
|
226
|
+
|
|
227
|
+
def clear_agent_caches(self) -> None:
|
|
228
|
+
"""Clear agent-related caches only."""
|
|
229
|
+
with self._lock:
|
|
230
|
+
self.logger.info("Clearing agent-related caches")
|
|
231
|
+
|
|
232
|
+
# Clear capabilities
|
|
233
|
+
self._capabilities_cache = None
|
|
234
|
+
self._capabilities_cache_time = 0
|
|
235
|
+
|
|
236
|
+
# Clear deployed agents
|
|
237
|
+
self._deployed_agents_cache = None
|
|
238
|
+
self._deployed_agents_cache_time = 0
|
|
239
|
+
|
|
240
|
+
# Clear metadata
|
|
241
|
+
self._agent_metadata_cache.clear()
|
|
242
|
+
|
|
243
|
+
def clear_memory_caches(self) -> None:
|
|
244
|
+
"""Clear memory-related caches only."""
|
|
245
|
+
with self._lock:
|
|
246
|
+
self.logger.info("Clearing memory caches")
|
|
247
|
+
|
|
248
|
+
self._memories_cache = None
|
|
249
|
+
self._memories_cache_time = 0
|
|
250
|
+
|
|
251
|
+
def get_stats(self) -> Dict[str, Any]:
|
|
252
|
+
"""Get cache statistics."""
|
|
253
|
+
with self._lock:
|
|
254
|
+
current_time = time.time()
|
|
255
|
+
|
|
256
|
+
stats = {
|
|
257
|
+
"capabilities": {
|
|
258
|
+
"cached": self._capabilities_cache is not None,
|
|
259
|
+
"age": (
|
|
260
|
+
current_time - self._capabilities_cache_time
|
|
261
|
+
if self._capabilities_cache
|
|
262
|
+
else None
|
|
263
|
+
),
|
|
264
|
+
"valid": (
|
|
265
|
+
self.is_cache_valid(
|
|
266
|
+
self._capabilities_cache_time, self.capabilities_ttl
|
|
267
|
+
)
|
|
268
|
+
if self._capabilities_cache
|
|
269
|
+
else False
|
|
270
|
+
),
|
|
271
|
+
},
|
|
272
|
+
"deployed_agents": {
|
|
273
|
+
"cached": self._deployed_agents_cache is not None,
|
|
274
|
+
"count": (
|
|
275
|
+
len(self._deployed_agents_cache)
|
|
276
|
+
if self._deployed_agents_cache
|
|
277
|
+
else 0
|
|
278
|
+
),
|
|
279
|
+
"age": (
|
|
280
|
+
current_time - self._deployed_agents_cache_time
|
|
281
|
+
if self._deployed_agents_cache
|
|
282
|
+
else None
|
|
283
|
+
),
|
|
284
|
+
"valid": (
|
|
285
|
+
self.is_cache_valid(
|
|
286
|
+
self._deployed_agents_cache_time, self.deployed_agents_ttl
|
|
287
|
+
)
|
|
288
|
+
if self._deployed_agents_cache
|
|
289
|
+
else False
|
|
290
|
+
),
|
|
291
|
+
},
|
|
292
|
+
"metadata": {"entries": len(self._agent_metadata_cache)},
|
|
293
|
+
"memories": {
|
|
294
|
+
"cached": self._memories_cache is not None,
|
|
295
|
+
"age": (
|
|
296
|
+
current_time - self._memories_cache_time
|
|
297
|
+
if self._memories_cache
|
|
298
|
+
else None
|
|
299
|
+
),
|
|
300
|
+
"valid": (
|
|
301
|
+
self.is_cache_valid(
|
|
302
|
+
self._memories_cache_time, self.memories_ttl
|
|
303
|
+
)
|
|
304
|
+
if self._memories_cache
|
|
305
|
+
else False
|
|
306
|
+
),
|
|
307
|
+
},
|
|
308
|
+
"fs_cache": self._fs_cache.get_stats() if self._fs_cache else {},
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return stats
|
|
@@ -143,46 +143,46 @@ class InterfaceRegistry:
|
|
|
143
143
|
|
|
144
144
|
# Re-export everything for backward compatibility
|
|
145
145
|
__all__ = [
|
|
146
|
-
|
|
147
|
-
"
|
|
148
|
-
"
|
|
149
|
-
# Infrastructure interfaces
|
|
150
|
-
"IServiceContainer",
|
|
151
|
-
"IConfigurationService",
|
|
152
|
-
"IConfigurationManager",
|
|
153
|
-
"ICacheService",
|
|
154
|
-
"IPromptCache",
|
|
146
|
+
"AgentCapabilitiesInterface",
|
|
147
|
+
"AgentDeploymentInterface",
|
|
148
|
+
"AgentMetadata",
|
|
155
149
|
"CacheEntry",
|
|
156
|
-
"
|
|
150
|
+
"CommandHandlerInterface",
|
|
157
151
|
"HealthStatus",
|
|
158
|
-
"
|
|
159
|
-
"TemplateRenderContext",
|
|
160
|
-
"IServiceFactory",
|
|
161
|
-
"IStructuredLogger",
|
|
162
|
-
"IServiceLifecycle",
|
|
163
|
-
"IErrorHandler",
|
|
164
|
-
"IPerformanceMonitor",
|
|
165
|
-
"IEventBus",
|
|
152
|
+
"HookServiceInterface",
|
|
166
153
|
# Agent interfaces
|
|
167
154
|
"IAgentRegistry",
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
|
|
175
|
-
"
|
|
176
|
-
|
|
155
|
+
"ICacheService",
|
|
156
|
+
"IConfigurationManager",
|
|
157
|
+
"IConfigurationService",
|
|
158
|
+
"IErrorHandler",
|
|
159
|
+
"IEventBus",
|
|
160
|
+
"IHealthMonitor",
|
|
161
|
+
"IPerformanceMonitor",
|
|
162
|
+
"IPromptCache",
|
|
163
|
+
# Infrastructure interfaces
|
|
164
|
+
"IServiceContainer",
|
|
165
|
+
"IServiceFactory",
|
|
166
|
+
"IServiceLifecycle",
|
|
167
|
+
"IStructuredLogger",
|
|
168
|
+
"ITemplateManager",
|
|
169
|
+
# Registry
|
|
170
|
+
"InterfaceRegistry",
|
|
177
171
|
"MemoryHookInterface",
|
|
178
172
|
"MemoryServiceInterface",
|
|
173
|
+
"ProjectAnalyzerInterface",
|
|
174
|
+
"RunnerConfigurationInterface",
|
|
175
|
+
"ServiceType",
|
|
179
176
|
"SessionManagementInterface",
|
|
180
|
-
"UtilityServiceInterface",
|
|
181
|
-
"HookServiceInterface",
|
|
182
177
|
# Communication interfaces
|
|
183
178
|
"SocketIOServiceInterface",
|
|
184
|
-
"
|
|
179
|
+
"SubprocessLauncherInterface",
|
|
180
|
+
"SystemInstructionsInterface",
|
|
181
|
+
# Type variables
|
|
182
|
+
"T",
|
|
183
|
+
"TemplateRenderContext",
|
|
185
184
|
"TicketManagerInterface",
|
|
186
|
-
|
|
187
|
-
|
|
185
|
+
"UtilityServiceInterface",
|
|
186
|
+
# Service interfaces
|
|
187
|
+
"VersionServiceInterface",
|
|
188
188
|
]
|
|
@@ -68,29 +68,24 @@ class IAgentRegistry(ABC):
|
|
|
68
68
|
self, force_refresh: bool = False
|
|
69
69
|
) -> Dict[str, AgentMetadata]:
|
|
70
70
|
"""Discover all available agents"""
|
|
71
|
-
pass
|
|
72
71
|
|
|
73
72
|
@abstractmethod
|
|
74
73
|
async def get_agent(self, agent_name: str) -> Optional[AgentMetadata]:
|
|
75
74
|
"""Get specific agent metadata"""
|
|
76
|
-
pass
|
|
77
75
|
|
|
78
76
|
@abstractmethod
|
|
79
77
|
async def list_agents(
|
|
80
78
|
self, agent_type: Optional[str] = None, tier: Optional[str] = None
|
|
81
79
|
) -> List[AgentMetadata]:
|
|
82
80
|
"""List agents with optional filtering"""
|
|
83
|
-
pass
|
|
84
81
|
|
|
85
82
|
@abstractmethod
|
|
86
83
|
async def get_specialized_agents(self, agent_type: str) -> List[AgentMetadata]:
|
|
87
84
|
"""Get agents of a specific specialized type"""
|
|
88
|
-
pass
|
|
89
85
|
|
|
90
86
|
@abstractmethod
|
|
91
87
|
async def refresh_agent_cache(self) -> None:
|
|
92
88
|
"""Refresh the agent metadata cache"""
|
|
93
|
-
pass
|
|
94
89
|
|
|
95
90
|
|
|
96
91
|
# Agent deployment interface
|
|
@@ -118,7 +113,6 @@ class AgentDeploymentInterface(ABC):
|
|
|
118
113
|
Returns:
|
|
119
114
|
Dictionary with deployment results and status
|
|
120
115
|
"""
|
|
121
|
-
pass
|
|
122
116
|
|
|
123
117
|
@abstractmethod
|
|
124
118
|
def validate_agent(self, agent_path: Path) -> Tuple[bool, List[str]]:
|
|
@@ -130,7 +124,6 @@ class AgentDeploymentInterface(ABC):
|
|
|
130
124
|
Returns:
|
|
131
125
|
Tuple of (is_valid, list_of_errors)
|
|
132
126
|
"""
|
|
133
|
-
pass
|
|
134
127
|
|
|
135
128
|
@abstractmethod
|
|
136
129
|
def get_deployment_status(self, agent_name: str) -> Dict[str, Any]:
|
|
@@ -142,7 +135,6 @@ class AgentDeploymentInterface(ABC):
|
|
|
142
135
|
Returns:
|
|
143
136
|
Dictionary with deployment status information
|
|
144
137
|
"""
|
|
145
|
-
pass
|
|
146
138
|
|
|
147
139
|
|
|
148
140
|
# Agent capabilities interface
|
|
@@ -168,7 +160,6 @@ class AgentCapabilitiesInterface(ABC):
|
|
|
168
160
|
Returns:
|
|
169
161
|
Formatted capabilities string for Claude consumption
|
|
170
162
|
"""
|
|
171
|
-
pass
|
|
172
163
|
|
|
173
164
|
|
|
174
165
|
# System instructions interface
|
|
@@ -194,7 +185,6 @@ class SystemInstructionsInterface(ABC):
|
|
|
194
185
|
Returns:
|
|
195
186
|
Processed system instructions string
|
|
196
187
|
"""
|
|
197
|
-
pass
|
|
198
188
|
|
|
199
189
|
@abstractmethod
|
|
200
190
|
def get_available_instruction_types(self) -> List[str]:
|
|
@@ -203,7 +193,6 @@ class SystemInstructionsInterface(ABC):
|
|
|
203
193
|
Returns:
|
|
204
194
|
List of available instruction type names
|
|
205
195
|
"""
|
|
206
|
-
pass
|
|
207
196
|
|
|
208
197
|
@abstractmethod
|
|
209
198
|
def validate_instructions(self, instructions: str) -> Tuple[bool, List[str]]:
|
|
@@ -215,7 +204,6 @@ class SystemInstructionsInterface(ABC):
|
|
|
215
204
|
Returns:
|
|
216
205
|
Tuple of (is_valid, list_of_errors)
|
|
217
206
|
"""
|
|
218
|
-
pass
|
|
219
207
|
|
|
220
208
|
|
|
221
209
|
# Subprocess launcher interface
|
|
@@ -241,7 +229,6 @@ class SubprocessLauncherInterface(ABC):
|
|
|
241
229
|
Returns:
|
|
242
230
|
Dictionary with subprocess information and handles
|
|
243
231
|
"""
|
|
244
|
-
pass
|
|
245
232
|
|
|
246
233
|
@abstractmethod
|
|
247
234
|
async def launch_subprocess_async(
|
|
@@ -256,7 +243,6 @@ class SubprocessLauncherInterface(ABC):
|
|
|
256
243
|
Returns:
|
|
257
244
|
Dictionary with subprocess information and handles
|
|
258
245
|
"""
|
|
259
|
-
pass
|
|
260
246
|
|
|
261
247
|
@abstractmethod
|
|
262
248
|
def terminate_subprocess(self, process_id: str) -> bool:
|
|
@@ -268,7 +254,6 @@ class SubprocessLauncherInterface(ABC):
|
|
|
268
254
|
Returns:
|
|
269
255
|
True if termination successful
|
|
270
256
|
"""
|
|
271
|
-
pass
|
|
272
257
|
|
|
273
258
|
@abstractmethod
|
|
274
259
|
def get_subprocess_status(self, process_id: str) -> Dict[str, Any]:
|
|
@@ -280,7 +265,6 @@ class SubprocessLauncherInterface(ABC):
|
|
|
280
265
|
Returns:
|
|
281
266
|
Dictionary with process status information
|
|
282
267
|
"""
|
|
283
|
-
pass
|
|
284
268
|
|
|
285
269
|
|
|
286
270
|
# Runner configuration interface
|
|
@@ -306,7 +290,6 @@ class RunnerConfigurationInterface(ABC):
|
|
|
306
290
|
Returns:
|
|
307
291
|
Dictionary with initialization results
|
|
308
292
|
"""
|
|
309
|
-
pass
|
|
310
293
|
|
|
311
294
|
@abstractmethod
|
|
312
295
|
def register_services(self, service_container) -> None:
|
|
@@ -315,7 +298,6 @@ class RunnerConfigurationInterface(ABC):
|
|
|
315
298
|
Args:
|
|
316
299
|
service_container: Service container for registration
|
|
317
300
|
"""
|
|
318
|
-
pass
|
|
319
301
|
|
|
320
302
|
@abstractmethod
|
|
321
303
|
def load_configuration(self, config_path: Optional[Path] = None) -> Dict[str, Any]:
|
|
@@ -327,7 +309,6 @@ class RunnerConfigurationInterface(ABC):
|
|
|
327
309
|
Returns:
|
|
328
310
|
Loaded configuration dictionary
|
|
329
311
|
"""
|
|
330
|
-
pass
|
|
331
312
|
|
|
332
313
|
@abstractmethod
|
|
333
314
|
def validate_configuration(self, config: Dict[str, Any]) -> Tuple[bool, List[str]]:
|
|
@@ -339,7 +320,6 @@ class RunnerConfigurationInterface(ABC):
|
|
|
339
320
|
Returns:
|
|
340
321
|
Tuple of (is_valid, list_of_errors)
|
|
341
322
|
"""
|
|
342
|
-
pass
|
|
343
323
|
|
|
344
324
|
@abstractmethod
|
|
345
325
|
def setup_logging(self, config: Dict[str, Any]) -> None:
|
|
@@ -348,4 +328,3 @@ class RunnerConfigurationInterface(ABC):
|
|
|
348
328
|
Args:
|
|
349
329
|
config: Logging configuration
|
|
350
330
|
"""
|
|
351
|
-
pass
|