claude-mpm 4.1.1__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 +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 +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.1.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.1.dist-info/RECORD +0 -494
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.2.dist-info}/WHEEL +0 -0
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.2.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.2.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.1.1.dist-info → claude_mpm-4.1.2.dist-info}/top_level.txt +0 -0
|
@@ -20,7 +20,6 @@ multi-file implementation for better maintainability.
|
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
22
|
import asyncio
|
|
23
|
-
import hashlib
|
|
24
23
|
import json
|
|
25
24
|
import logging
|
|
26
25
|
import os
|
|
@@ -28,7 +27,7 @@ from dataclasses import dataclass, field
|
|
|
28
27
|
from datetime import datetime
|
|
29
28
|
from enum import Enum
|
|
30
29
|
from pathlib import Path
|
|
31
|
-
from typing import Any, Dict, List, Optional,
|
|
30
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
32
31
|
|
|
33
32
|
import yaml
|
|
34
33
|
|
|
@@ -37,7 +36,6 @@ from claude_mpm.core.config import Config
|
|
|
37
36
|
from claude_mpm.core.unified_paths import get_path_manager
|
|
38
37
|
from claude_mpm.services.agents.registry import AgentRegistry
|
|
39
38
|
from claude_mpm.services.memory.cache.shared_prompt_cache import SharedPromptCache
|
|
40
|
-
from claude_mpm.utils.path_operations import path_ops
|
|
41
39
|
|
|
42
40
|
logger = logging.getLogger(__name__)
|
|
43
41
|
|
|
@@ -146,7 +144,7 @@ class AgentProfileLoader(BaseService):
|
|
|
146
144
|
# Performance tracking
|
|
147
145
|
self.load_metrics: Dict[str, float] = {}
|
|
148
146
|
|
|
149
|
-
logger.info(
|
|
147
|
+
logger.info("AgentProfileLoader initialized successfully")
|
|
150
148
|
logger.info(f" Working directory: {self.working_directory}")
|
|
151
149
|
logger.info(f" Framework path: {self.framework_path}")
|
|
152
150
|
logger.info(f" Tier paths: {list(self.tier_paths.keys())}")
|
|
@@ -329,7 +327,7 @@ class AgentProfileLoader(BaseService):
|
|
|
329
327
|
instructions = data.get("instructions", "")
|
|
330
328
|
|
|
331
329
|
# Create profile
|
|
332
|
-
|
|
330
|
+
return AgentProfile(
|
|
333
331
|
name=data.get("name", file_path.stem),
|
|
334
332
|
role=data.get("role", "agent"),
|
|
335
333
|
description=data.get("description", ""),
|
|
@@ -342,8 +340,6 @@ class AgentProfileLoader(BaseService):
|
|
|
342
340
|
status=ProfileStatus.LOADED,
|
|
343
341
|
)
|
|
344
342
|
|
|
345
|
-
return profile
|
|
346
|
-
|
|
347
343
|
except Exception as e:
|
|
348
344
|
logger.error(f"Error parsing profile {file_path}: {e}")
|
|
349
345
|
return AgentProfile(
|
|
@@ -421,9 +417,7 @@ class AgentProfileLoader(BaseService):
|
|
|
421
417
|
for file_path in tier_path.glob(pattern):
|
|
422
418
|
agent_name = file_path.stem
|
|
423
419
|
# Remove common suffixes
|
|
424
|
-
if agent_name.endswith("_agent"):
|
|
425
|
-
agent_name = agent_name[:-6]
|
|
426
|
-
elif agent_name.endswith("-agent"):
|
|
420
|
+
if agent_name.endswith(("_agent", "-agent")):
|
|
427
421
|
agent_name = agent_name[:-6]
|
|
428
422
|
|
|
429
423
|
if agent_name not in agents:
|
|
@@ -448,7 +442,7 @@ class AgentProfileLoader(BaseService):
|
|
|
448
442
|
for agents in discovered.values():
|
|
449
443
|
all_agents.update(agents)
|
|
450
444
|
|
|
451
|
-
return sorted(
|
|
445
|
+
return sorted(all_agents)
|
|
452
446
|
|
|
453
447
|
# ========================================================================
|
|
454
448
|
# Improved Prompts Management
|
|
@@ -461,7 +455,7 @@ class AgentProfileLoader(BaseService):
|
|
|
461
455
|
|
|
462
456
|
if prompt_file.exists():
|
|
463
457
|
try:
|
|
464
|
-
with open(prompt_file
|
|
458
|
+
with open(prompt_file) as f:
|
|
465
459
|
data = json.load(f)
|
|
466
460
|
for prompt_data in data:
|
|
467
461
|
prompt = ImprovedPrompt(
|
|
@@ -67,7 +67,9 @@ class BaseAgentStructure:
|
|
|
67
67
|
class BaseAgentManager(ConfigServiceBase):
|
|
68
68
|
"""Manages base_agent.md with structured updates and validation."""
|
|
69
69
|
|
|
70
|
-
def __init__(
|
|
70
|
+
def __init__(
|
|
71
|
+
self, agents_dir: Optional[Path] = None, config: Optional[Dict[str, Any]] = None
|
|
72
|
+
):
|
|
71
73
|
"""Initialize BaseAgentManager."""
|
|
72
74
|
super().__init__("base_agent_manager", config=config)
|
|
73
75
|
|
|
@@ -75,7 +77,7 @@ class BaseAgentManager(ConfigServiceBase):
|
|
|
75
77
|
self.agents_dir = self.get_config_value(
|
|
76
78
|
"agents_dir",
|
|
77
79
|
default=agents_dir or Path(__file__).parent.parent / "agents",
|
|
78
|
-
config_type=Path
|
|
80
|
+
config_type=Path,
|
|
79
81
|
)
|
|
80
82
|
self.base_agent_path = self.agents_dir / "BASE_AGENT_TEMPLATE.md"
|
|
81
83
|
self.cache = SharedPromptCache.get_instance()
|
|
@@ -347,9 +349,7 @@ class BaseAgentManager(ConfigServiceBase):
|
|
|
347
349
|
items = []
|
|
348
350
|
for line in content.split("\n"):
|
|
349
351
|
line = line.strip()
|
|
350
|
-
if line.startswith("- "):
|
|
351
|
-
items.append(line[2:].strip())
|
|
352
|
-
elif line.startswith("* "):
|
|
352
|
+
if line.startswith(("- ", "* ")):
|
|
353
353
|
items.append(line[2:].strip())
|
|
354
354
|
elif line.startswith("**") and line.endswith("**"):
|
|
355
355
|
# Skip bold headers
|
|
@@ -12,14 +12,12 @@ This service integrates with the main agent_loader.py to provide
|
|
|
12
12
|
markdown-based agent profiles alongside JSON-based templates.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
|
-
import json
|
|
16
15
|
import logging
|
|
17
16
|
from pathlib import Path
|
|
18
17
|
from typing import Any, Dict, Optional
|
|
19
18
|
|
|
20
19
|
from claude_mpm.agents.agent_loader import (
|
|
21
20
|
AgentTier,
|
|
22
|
-
get_agent_tier,
|
|
23
21
|
list_agents_by_tier,
|
|
24
22
|
)
|
|
25
23
|
from claude_mpm.core.unified_paths import get_path_manager
|
|
@@ -97,7 +95,7 @@ class FrameworkAgentLoader:
|
|
|
97
95
|
current = Path.cwd()
|
|
98
96
|
|
|
99
97
|
# Check current directory and parents
|
|
100
|
-
for path in [current
|
|
98
|
+
for path in [current, *list(current.parents)]:
|
|
101
99
|
framework_instructions = path / "agents" / "INSTRUCTIONS.md"
|
|
102
100
|
framework_claude = path / "agents" / "CLAUDE.md" # Legacy
|
|
103
101
|
if framework_instructions.exists() or framework_claude.exists():
|
|
@@ -110,7 +108,7 @@ class FrameworkAgentLoader:
|
|
|
110
108
|
current = Path.cwd()
|
|
111
109
|
|
|
112
110
|
# Check current directory and parents for .claude-mpm
|
|
113
|
-
for path in [current
|
|
111
|
+
for path in [current, *list(current.parents)]:
|
|
114
112
|
claude_pm_dir = path / get_path_manager().CONFIG_DIR
|
|
115
113
|
if claude_pm_dir.exists():
|
|
116
114
|
return path
|
|
@@ -44,15 +44,13 @@ class AgentCapabilitiesGenerator:
|
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
# Render template
|
|
47
|
-
|
|
47
|
+
return self.template.render(
|
|
48
48
|
core_agents=core_agent_list,
|
|
49
49
|
detailed_capabilities=detailed_capabilities,
|
|
50
50
|
agents_by_tier=agents_by_tier,
|
|
51
51
|
total_agents=len(deployed_agents),
|
|
52
52
|
)
|
|
53
53
|
|
|
54
|
-
return content
|
|
55
|
-
|
|
56
54
|
except Exception as e:
|
|
57
55
|
logger.error(f"Failed to generate capabilities section: {e}")
|
|
58
56
|
# Return fallback content on error
|
|
@@ -12,10 +12,9 @@ Uses python-frontmatter and mistune for markdown parsing as recommended.
|
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
14
|
import logging
|
|
15
|
-
import os
|
|
16
15
|
import re
|
|
17
16
|
from datetime import datetime
|
|
18
|
-
from typing import Any, Dict, List, Optional
|
|
17
|
+
from typing import Any, Dict, List, Optional
|
|
19
18
|
|
|
20
19
|
import frontmatter
|
|
21
20
|
import mistune
|
|
@@ -371,7 +370,7 @@ class AgentManager:
|
|
|
371
370
|
title = title_match.group(1) if title_match else name.replace("-", " ").title()
|
|
372
371
|
|
|
373
372
|
# Build definition
|
|
374
|
-
|
|
373
|
+
return AgentDefinition(
|
|
375
374
|
name=name,
|
|
376
375
|
title=title,
|
|
377
376
|
file_path=file_path,
|
|
@@ -403,8 +402,6 @@ class AgentManager:
|
|
|
403
402
|
raw_sections=sections,
|
|
404
403
|
)
|
|
405
404
|
|
|
406
|
-
return definition
|
|
407
|
-
|
|
408
405
|
def _extract_sections(self, content: str) -> Dict[str, str]:
|
|
409
406
|
"""Extract sections from markdown content."""
|
|
410
407
|
sections = {}
|
|
@@ -425,10 +422,9 @@ class AgentManager:
|
|
|
425
422
|
# Start new section
|
|
426
423
|
current_section = header_match.group(1).strip()
|
|
427
424
|
current_content = []
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
current_content.append(line)
|
|
425
|
+
# Add to current section
|
|
426
|
+
elif current_section:
|
|
427
|
+
current_content.append(line)
|
|
432
428
|
|
|
433
429
|
# Save last section
|
|
434
430
|
if current_section:
|
|
@@ -12,11 +12,11 @@ from .template_generator import MemoryTemplateGenerator
|
|
|
12
12
|
|
|
13
13
|
__all__ = [
|
|
14
14
|
"AgentMemoryManager",
|
|
15
|
-
"get_memory_manager",
|
|
16
15
|
"AgentPersistenceService",
|
|
17
|
-
"
|
|
16
|
+
"MemoryContentManager",
|
|
17
|
+
"MemoryTemplateGenerator",
|
|
18
18
|
"PersistenceOperation",
|
|
19
19
|
"PersistenceRecord",
|
|
20
|
-
"
|
|
21
|
-
"
|
|
20
|
+
"PersistenceStrategy",
|
|
21
|
+
"get_memory_manager",
|
|
22
22
|
]
|