claude-mpm 4.1.4__tar.gz → 4.1.5__tar.gz
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-4.1.5/BUILD_NUMBER +1 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/CLAUDE.md +1 -38
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/PKG-INFO +1 -1
- claude_mpm-4.1.5/VERSION +1 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/pyproject.toml +2 -2
- claude_mpm-4.1.5/src/claude_mpm/VERSION +1 -0
- claude_mpm-4.1.5/src/claude_mpm/cli/commands/tickets.py +546 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/output_style_manager.py +24 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/unified_agent_registry.py +46 -15
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_discovery_service.py +12 -3
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +172 -233
- claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +575 -0
- claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_operation_service.py +573 -0
- claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_record_service.py +419 -0
- claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_state_service.py +381 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/multi_source_deployment_service.py +4 -2
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/__init__.py +52 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/__init__.py +43 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/aggregator.py +437 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/base.py +130 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/legacy.py +203 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/network.py +218 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/process.py +342 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/resources.py +243 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/service.py +367 -0
- claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring.py +71 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/project/analyzer.py +13 -4
- claude_mpm-4.1.5/src/claude_mpm/services/project/analyzer_refactored.py +450 -0
- claude_mpm-4.1.5/src/claude_mpm/services/project/analyzer_v2.py +566 -0
- claude_mpm-4.1.5/src/claude_mpm/services/project/architecture_analyzer.py +461 -0
- claude_mpm-4.1.5/src/claude_mpm/services/project/dependency_analyzer.py +462 -0
- claude_mpm-4.1.5/src/claude_mpm/services/project/language_analyzer.py +265 -0
- claude_mpm-4.1.5/src/claude_mpm/services/project/metrics_collector.py +410 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/ticket_manager.py +5 -1
- claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/__init__.py +26 -0
- claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/crud_service.py +328 -0
- claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/formatter_service.py +290 -0
- claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/search_service.py +324 -0
- claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/validation_service.py +303 -0
- claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/workflow_service.py +244 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/PKG-INFO +1 -1
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/SOURCES.txt +24 -0
- claude_mpm-4.1.4/BUILD_NUMBER +0 -1
- claude_mpm-4.1.4/VERSION +0 -1
- claude_mpm-4.1.4/src/claude_mpm/VERSION +0 -1
- claude_mpm-4.1.4/src/claude_mpm/cli/commands/tickets.py +0 -965
- claude_mpm-4.1.4/src/claude_mpm/services/infrastructure/__init__.py +0 -26
- claude_mpm-4.1.4/src/claude_mpm/services/infrastructure/monitoring.py +0 -1034
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/LICENSE +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/MANIFEST.in +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/README.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/scripts/ticket +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/setup.cfg +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/BUILD_NUMBER +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/__main__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/BASE_PM.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/INSTRUCTIONS.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/MEMORY.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/OUTPUT_STYLE.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/WORKFLOW.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agent-template.yaml +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agent_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agents_metadata.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/async_agent_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/backups/INSTRUCTIONS.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/base_agent.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/base_agent_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/frontmatter_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/schema/agent_schema.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/system_agent_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/OPTIMIZATION_REPORT.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/agent-manager.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/agent-manager.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/api_qa.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/research_agent_2025011_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/research_memory_efficient.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/code_analyzer.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/data_engineer.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/documentation.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/engineer.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/imagemagick.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/memory_manager.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/ops.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/project_organizer.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/qa.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/refactoring_engineer.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/research.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/security.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/ticketing.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/vercel_ops_agent.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/vercel_ops_instructions.md +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/version_control.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/web_qa.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/web_ui.json +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/__main__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/agent_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/agents.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/aggregate.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/cleanup.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/cleanup_orphaned_agents.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/doctor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/info.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_command_router.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_config_commands.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_install_commands.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_pipx_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_server_commands.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_tool_commands.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/memory.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/monitor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/run.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/socketio_monitor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/agent_manager_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/agents_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/base_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/config_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/mcp_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/memory_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/monitor_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/run_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/tickets_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/argument_patterns.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/base_command.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/error_handling.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/output_formatters.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/startup_logging.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/ticket_cli.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/utils.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/args.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/commands.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/migration_example.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/agent_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/experimental_features.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/paths.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/socketio_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/constants.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/agent_registry.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/agent_session_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/base_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/cache.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/claude_runner.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/config_aliases.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/config_constants.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/constants.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/container.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/exceptions.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/factories.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/framework_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/hook_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/hook_performance_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/injectable_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/interactive_session.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/interfaces.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/lazy.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/log_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/logger.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/logging_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/mixins.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/oneshot_session.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/optimized_agent_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/optimized_startup.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/service_registry.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/session_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/config_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/path_resolver.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/singleton_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/socketio_pool.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/tool_access_control.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/types.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/typing_utils.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/unified_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/unified_paths.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/index.html +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/open_dashboard.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/agent-inference.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/event-processor.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/event-viewer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/export-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/hud-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/module-viewer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/session-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/socket-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/working-directory.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/dashboard.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/socket-client.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/css/dashboard.css +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/event-processor.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/export-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/session-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/working-directory.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/dashboard.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/socket-client.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/agent-inference.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/build-tracker.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/event-processor.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/event-viewer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/export-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/hud-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/module-viewer.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/session-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/socket-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/working-directory.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/dashboard.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/extension-error-handler.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/socket-client.js +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/templates/index.html +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/test_dashboard.html +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/generators/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/base_hook.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/connection_pool.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/event_handlers.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/memory_integration.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/response_tracking.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/connection_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/duplicate_detector.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/state_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/subagent_processor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/tool_analysis.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/memory_integration_hook.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/validation_hooks.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/init.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/models/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/models/agent_definition.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/models/agent_session.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/mcp_server.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/mcp_wrapper.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/mpm_doctor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/socketio_daemon.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/socketio_daemon_hardened.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/socketio_server_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/start_activity_logging.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agent_capabilities_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/agent_builder.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_config_provider.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_configuration_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_definition_factory.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_deployment.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_environment_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_filesystem_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_format_converter.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_metrics_collector.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_restore_handler.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_template_builder.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_version_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_versioning.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agents_directory_resolver.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/async_agent_deployment.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/base_agent_locator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/config/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/config/deployment_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/config/deployment_config_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_config_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_results_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_type_detector.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_wrapper.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/deployment_executor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/deployment_facade.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/interface_adapter.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/lifecycle_health_checker.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/agent_processor.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/results/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/results/deployment_metrics.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/results/deployment_result_builder.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/single_agent_deployer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/base_strategy.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/project_strategy.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/strategy_selector.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/system_strategy.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/user_strategy.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/system_instructions_deployer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/agent_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/deployment_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/template_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/validation_result.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/agent_profile_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/base_agent_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/framework_agent_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/management/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/management/agent_capabilities_generator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/management/agent_management_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/agent_memory_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/agent_persistence_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/content_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_categorization_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_file_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_format_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_limits_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/template_generator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/registry/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/registry/deployed_agent_discovery.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/registry/modification_tracker.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/async_session_logger.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/claude_session_logger.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_cleanup_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_dependency_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_listing_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_output_formatter.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_validation_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/dashboard_launcher.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/memory_crud_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/memory_output_formatter.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/session_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/socketio_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/startup_checker.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/command_deployment_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/command_handler_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/communication/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/base.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/cache_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/agent.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/communication.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/infrastructure.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/memory_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/path_resolver.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/service_container.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/service_interfaces.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/agent_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/base_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/claude_desktop_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/common_issues_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/configuration_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/filesystem_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/installation_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/mcp_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/monitor_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/startup_log_check.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/diagnostic_runner.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/doctor_reporter.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/models.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_aggregator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/event_bus.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/relay.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/dead_letter.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/logging.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/metrics.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/socketio.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/core.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/interfaces.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/producers/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/producers/hook.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/producers/system.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/exceptions.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/hook_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/infrastructure/context_preservation.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/infrastructure/daemon_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/infrastructure/logging.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/auto_configure.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/config_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/config_schema.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/configuration.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/base.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/exceptions.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/interfaces.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/process_pool.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/main.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/registry/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/builder.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/cache/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/cache/shared_prompt_cache.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/cache/simple_cache.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/indexed_memory.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/optimizer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/router.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory_hook_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/monitor_build_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/port_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/project/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/project/registry.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/recovery_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/response_tracker.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/runner_configuration_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/session_management_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/async_service_base.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/config_service_base.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/lifecycle_service_base.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/manager_base.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/service_factory.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/client_proxy.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/event_normalizer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/base.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/connection.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/file.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/git.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/hook.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/memory.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/project.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/registry.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/migration_utils.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/broadcaster.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/core.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/eventbus_integration.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/main.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio_client_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio_server.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/subprocess_launcher_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/system_instructions_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/utility_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/git_operations.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/version_parser.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_service.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/storage/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/storage/state_storage.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/ticket_wrapper.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/agent_dependency_loader.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/config_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/console.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/dependency_cache.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/dependency_manager.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/dependency_strategies.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/environment_context.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/error_handler.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/file_utils.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/framework_detection.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/import_migration_example.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/imports.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/path_operations.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/robust_installer.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/session_logging.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/subprocess_utils.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/validation/__init__.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/validation/agent_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/validation/frontmatter_validator.py +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/entry_points.txt +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/requires.txt +0 -0
- {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
301
|
|
@@ -292,47 +292,10 @@ See [docs/reference/DEPLOY.md](docs/reference/DEPLOY.md) for the complete deploy
|
|
|
292
292
|
- Creating GitHub releases
|
|
293
293
|
- Post-deployment verification
|
|
294
294
|
|
|
295
|
-
## TSK-0053 Refactoring Achievements
|
|
296
|
-
|
|
297
|
-
The service layer architecture refactoring delivered:
|
|
298
|
-
|
|
299
|
-
### Technical Achievements
|
|
300
|
-
- **Service-Oriented Architecture**: Complete redesign with five specialized service domains
|
|
301
|
-
- **Interface-Based Contracts**: All major services implement explicit interfaces
|
|
302
|
-
- **Dependency Injection**: Service container with automatic dependency resolution
|
|
303
|
-
- **50-80% Performance Improvement**: Through lazy loading and intelligent caching
|
|
304
|
-
- **Enhanced Security**: Comprehensive input validation and sanitization framework
|
|
305
|
-
- **Backward Compatibility**: Lazy imports maintain existing import paths
|
|
306
|
-
|
|
307
|
-
### Quality Improvements
|
|
308
|
-
- **Better Testability**: Interface-based architecture enables easy mocking and testing
|
|
309
|
-
- **Improved Maintainability**: Clear separation of concerns and service boundaries
|
|
310
|
-
- **Enhanced Reliability**: Comprehensive testing with 85%+ coverage target
|
|
311
|
-
- **Developer Experience**: Rich documentation and migration guides
|
|
312
|
-
|
|
313
|
-
### Future-Proofing
|
|
314
|
-
- **Scalability**: Service-oriented design supports future growth
|
|
315
|
-
- **Extensibility**: Plugin architecture through interfaces and hooks
|
|
316
|
-
- **Modularity**: Clear service boundaries enable independent development
|
|
317
|
-
- **Performance**: Intelligent caching and resource optimization foundations
|
|
318
|
-
|
|
319
|
-
## v4.0.25 Updates
|
|
320
|
-
|
|
321
|
-
### Version Tracking System Enhancement
|
|
322
|
-
- **BUILD_NUMBER file**: Replaces BUILDVERSION for cleaner naming
|
|
323
|
-
- **Dual tracking**: VERSION (semantic) + BUILD_NUMBER (serial)
|
|
324
|
-
- **Three display formats**: Development, UI/Logging, and PyPI Release
|
|
325
|
-
- **Automatic incrementing**: Git hooks increment build numbers for code changes
|
|
326
|
-
|
|
327
|
-
### New Features
|
|
328
|
-
- **cleanup-memory command**: New CLI command to manage Claude conversation history
|
|
329
|
-
- **Memory management**: Addresses 2GB+ memory usage from large .claude.json files
|
|
330
|
-
- **Archive system**: Safely archive old conversations while keeping recent ones active
|
|
331
|
-
|
|
332
295
|
## Important Notes
|
|
333
296
|
|
|
334
297
|
- This file (CLAUDE.md) contains ONLY development guidelines for this project
|
|
335
298
|
- Framework features and usage are documented in the framework itself
|
|
336
299
|
- Claude Code automatically reads this file - keep it focused on development tasks
|
|
337
300
|
- Do not include end-user documentation or framework features here
|
|
338
|
-
- The refactored architecture enables faster development and better code quality
|
|
301
|
+
- The refactored architecture enables faster development and better code quality
|
claude_mpm-4.1.5/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.1.5
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "claude-mpm"
|
|
7
|
-
version = "4.1.
|
|
7
|
+
version = "4.1.5"
|
|
8
8
|
description = "Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -240,7 +240,7 @@ ignore-imports = false
|
|
|
240
240
|
|
|
241
241
|
[tool.commitizen]
|
|
242
242
|
name = "cz_conventional_commits"
|
|
243
|
-
version = "4.1.
|
|
243
|
+
version = "4.1.5"
|
|
244
244
|
version_files = [
|
|
245
245
|
"VERSION",
|
|
246
246
|
"src/claude_mpm/VERSION",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.1.5
|
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Tickets command implementation for claude-mpm.
|
|
3
|
+
|
|
4
|
+
WHY: This module provides comprehensive ticket management functionality, allowing users
|
|
5
|
+
to create, view, update, and manage tickets through the CLI. It integrates with
|
|
6
|
+
ai-trackdown-pytools for persistent ticket storage.
|
|
7
|
+
|
|
8
|
+
DESIGN DECISIONS:
|
|
9
|
+
- Use BaseCommand for consistent CLI patterns
|
|
10
|
+
- Leverage shared utilities for argument parsing and output formatting
|
|
11
|
+
- Maintain backward compatibility with existing ai-trackdown integration
|
|
12
|
+
- Support multiple output formats (json, yaml, table, text)
|
|
13
|
+
- Implement full CRUD operations plus search and workflow management
|
|
14
|
+
- Use service-oriented architecture to separate concerns
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import sys
|
|
18
|
+
from typing import Optional
|
|
19
|
+
|
|
20
|
+
from ...constants import TicketCommands
|
|
21
|
+
from ...services.ticket_services import (
|
|
22
|
+
TicketCRUDService,
|
|
23
|
+
TicketFormatterService,
|
|
24
|
+
TicketSearchService,
|
|
25
|
+
TicketValidationService,
|
|
26
|
+
TicketWorkflowService,
|
|
27
|
+
)
|
|
28
|
+
from ..shared import BaseCommand, CommandResult
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class TicketsCommand(BaseCommand):
|
|
32
|
+
"""Tickets command using shared utilities and service-oriented architecture."""
|
|
33
|
+
|
|
34
|
+
def __init__(self):
|
|
35
|
+
"""Initialize the tickets command with services."""
|
|
36
|
+
super().__init__("tickets")
|
|
37
|
+
|
|
38
|
+
# Initialize services using dependency injection
|
|
39
|
+
self.crud_service = TicketCRUDService()
|
|
40
|
+
self.formatter = TicketFormatterService()
|
|
41
|
+
self.validator = TicketValidationService()
|
|
42
|
+
self.search_service = TicketSearchService()
|
|
43
|
+
self.workflow_service = TicketWorkflowService()
|
|
44
|
+
|
|
45
|
+
def validate_args(self, args) -> Optional[str]:
|
|
46
|
+
"""Validate command arguments."""
|
|
47
|
+
if not hasattr(args, "tickets_command") or not args.tickets_command:
|
|
48
|
+
return "No tickets subcommand specified"
|
|
49
|
+
|
|
50
|
+
valid_commands = [cmd.value for cmd in TicketCommands]
|
|
51
|
+
if args.tickets_command not in valid_commands:
|
|
52
|
+
return f"Unknown tickets command: {args.tickets_command}. Valid commands: {', '.join(valid_commands)}"
|
|
53
|
+
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
def run(self, args) -> CommandResult:
|
|
57
|
+
"""Execute the tickets command."""
|
|
58
|
+
try:
|
|
59
|
+
# Route to specific subcommand handlers
|
|
60
|
+
command_map = {
|
|
61
|
+
TicketCommands.CREATE.value: self._create_ticket,
|
|
62
|
+
TicketCommands.LIST.value: self._list_tickets,
|
|
63
|
+
TicketCommands.VIEW.value: self._view_ticket,
|
|
64
|
+
TicketCommands.UPDATE.value: self._update_ticket,
|
|
65
|
+
TicketCommands.CLOSE.value: self._close_ticket,
|
|
66
|
+
TicketCommands.DELETE.value: self._delete_ticket,
|
|
67
|
+
TicketCommands.SEARCH.value: self._search_tickets,
|
|
68
|
+
TicketCommands.COMMENT.value: self._add_comment,
|
|
69
|
+
TicketCommands.WORKFLOW.value: self._update_workflow,
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if args.tickets_command in command_map:
|
|
73
|
+
return command_map[args.tickets_command](args)
|
|
74
|
+
return CommandResult.error_result(
|
|
75
|
+
f"Unknown tickets command: {args.tickets_command}"
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
except Exception as e:
|
|
79
|
+
self.logger.error(f"Error executing tickets command: {e}", exc_info=True)
|
|
80
|
+
return CommandResult.error_result(f"Error executing tickets command: {e}")
|
|
81
|
+
|
|
82
|
+
def _create_ticket(self, args) -> CommandResult:
|
|
83
|
+
"""Create a new ticket using the CRUD service."""
|
|
84
|
+
try:
|
|
85
|
+
# Prepare parameters
|
|
86
|
+
description = self.validator.sanitize_description(args.description)
|
|
87
|
+
tags = self.validator.sanitize_tags(args.tags)
|
|
88
|
+
|
|
89
|
+
# Validate creation parameters
|
|
90
|
+
params = {"title": args.title, "type": args.type, "priority": args.priority}
|
|
91
|
+
valid, error = self.validator.validate_create_params(params)
|
|
92
|
+
if not valid:
|
|
93
|
+
print(self.formatter.format_error(error))
|
|
94
|
+
return CommandResult.error_result(error)
|
|
95
|
+
|
|
96
|
+
# Create ticket via service
|
|
97
|
+
result = self.crud_service.create_ticket(
|
|
98
|
+
title=args.title,
|
|
99
|
+
ticket_type=args.type,
|
|
100
|
+
priority=args.priority,
|
|
101
|
+
description=description,
|
|
102
|
+
tags=tags,
|
|
103
|
+
parent_epic=getattr(args, "parent_epic", None),
|
|
104
|
+
parent_issue=getattr(args, "parent_issue", None),
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
if result["success"]:
|
|
108
|
+
# Format and display output
|
|
109
|
+
output_lines = self.formatter.format_ticket_created(
|
|
110
|
+
result["ticket_id"],
|
|
111
|
+
verbose=args.verbose,
|
|
112
|
+
type=args.type,
|
|
113
|
+
priority=args.priority,
|
|
114
|
+
tags=tags,
|
|
115
|
+
parent_epic=getattr(args, "parent_epic", None),
|
|
116
|
+
parent_issue=getattr(args, "parent_issue", None),
|
|
117
|
+
)
|
|
118
|
+
for line in output_lines:
|
|
119
|
+
print(line)
|
|
120
|
+
return CommandResult.success_result(result["message"])
|
|
121
|
+
print(self.formatter.format_error(result["error"]))
|
|
122
|
+
return CommandResult.error_result(result["error"])
|
|
123
|
+
|
|
124
|
+
except Exception as e:
|
|
125
|
+
self.logger.error(f"Error creating ticket: {e}")
|
|
126
|
+
return CommandResult.error_result(f"Error creating ticket: {e}")
|
|
127
|
+
|
|
128
|
+
def _list_tickets(self, args) -> CommandResult:
|
|
129
|
+
"""List tickets using the CRUD service."""
|
|
130
|
+
try:
|
|
131
|
+
# Get pagination parameters
|
|
132
|
+
page = getattr(args, "page", 1)
|
|
133
|
+
page_size = getattr(args, "page_size", 20)
|
|
134
|
+
limit = getattr(args, "limit", page_size)
|
|
135
|
+
|
|
136
|
+
# Validate pagination
|
|
137
|
+
valid, error = self.validator.validate_pagination(page, page_size)
|
|
138
|
+
if not valid:
|
|
139
|
+
print(self.formatter.format_error(error))
|
|
140
|
+
return CommandResult.error_result(error)
|
|
141
|
+
|
|
142
|
+
# Get filters
|
|
143
|
+
type_filter = getattr(args, "type", None) or "all"
|
|
144
|
+
status_filter = getattr(args, "status", None) or "all"
|
|
145
|
+
|
|
146
|
+
# List tickets via service
|
|
147
|
+
result = self.crud_service.list_tickets(
|
|
148
|
+
limit=limit,
|
|
149
|
+
page=page,
|
|
150
|
+
page_size=page_size,
|
|
151
|
+
type_filter=type_filter,
|
|
152
|
+
status_filter=status_filter,
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
if result["success"]:
|
|
156
|
+
# Format and display output
|
|
157
|
+
output_lines = self.formatter.format_ticket_list(
|
|
158
|
+
result["tickets"],
|
|
159
|
+
page=page,
|
|
160
|
+
page_size=page_size,
|
|
161
|
+
verbose=getattr(args, "verbose", False),
|
|
162
|
+
)
|
|
163
|
+
for line in output_lines:
|
|
164
|
+
print(line)
|
|
165
|
+
return CommandResult.success_result("Tickets listed successfully")
|
|
166
|
+
print(self.formatter.format_error(result["error"]))
|
|
167
|
+
return CommandResult.error_result(result["error"])
|
|
168
|
+
|
|
169
|
+
except Exception as e:
|
|
170
|
+
self.logger.error(f"Error listing tickets: {e}")
|
|
171
|
+
return CommandResult.error_result(f"Error listing tickets: {e}")
|
|
172
|
+
|
|
173
|
+
def _view_ticket(self, args) -> CommandResult:
|
|
174
|
+
"""View a specific ticket using the CRUD service."""
|
|
175
|
+
try:
|
|
176
|
+
# Get ticket ID
|
|
177
|
+
ticket_id = getattr(args, "ticket_id", getattr(args, "id", None))
|
|
178
|
+
|
|
179
|
+
# Validate ticket ID
|
|
180
|
+
valid, error = self.validator.validate_ticket_id(ticket_id)
|
|
181
|
+
if not valid:
|
|
182
|
+
print(self.formatter.format_error(error))
|
|
183
|
+
return CommandResult.error_result(error)
|
|
184
|
+
|
|
185
|
+
# Get ticket via service
|
|
186
|
+
ticket = self.crud_service.get_ticket(ticket_id)
|
|
187
|
+
|
|
188
|
+
if ticket:
|
|
189
|
+
# Format and display output
|
|
190
|
+
output_lines = self.formatter.format_ticket_detail(
|
|
191
|
+
ticket, verbose=getattr(args, "verbose", False)
|
|
192
|
+
)
|
|
193
|
+
for line in output_lines:
|
|
194
|
+
print(line)
|
|
195
|
+
return CommandResult.success_result("Ticket viewed successfully")
|
|
196
|
+
error_msg = f"Ticket {ticket_id} not found"
|
|
197
|
+
print(self.formatter.format_error(error_msg))
|
|
198
|
+
return CommandResult.error_result(error_msg)
|
|
199
|
+
|
|
200
|
+
except Exception as e:
|
|
201
|
+
self.logger.error(f"Error viewing ticket: {e}")
|
|
202
|
+
return CommandResult.error_result(f"Error viewing ticket: {e}")
|
|
203
|
+
|
|
204
|
+
def _update_ticket(self, args) -> CommandResult:
|
|
205
|
+
"""Update a ticket using the CRUD service."""
|
|
206
|
+
try:
|
|
207
|
+
# Get ticket ID
|
|
208
|
+
ticket_id = getattr(args, "ticket_id", getattr(args, "id", None))
|
|
209
|
+
|
|
210
|
+
# Validate ticket ID
|
|
211
|
+
valid, error = self.validator.validate_ticket_id(ticket_id)
|
|
212
|
+
if not valid:
|
|
213
|
+
print(self.formatter.format_error(error))
|
|
214
|
+
return CommandResult.error_result(error)
|
|
215
|
+
|
|
216
|
+
# Prepare update parameters
|
|
217
|
+
description = None
|
|
218
|
+
if args.description:
|
|
219
|
+
description = self.validator.sanitize_description(args.description)
|
|
220
|
+
|
|
221
|
+
tags = None
|
|
222
|
+
if args.tags:
|
|
223
|
+
tags = self.validator.sanitize_tags(args.tags)
|
|
224
|
+
|
|
225
|
+
assignees = None
|
|
226
|
+
if args.assign:
|
|
227
|
+
assignees = [args.assign]
|
|
228
|
+
|
|
229
|
+
# Validate update parameters
|
|
230
|
+
update_params = {}
|
|
231
|
+
if args.status:
|
|
232
|
+
update_params["status"] = args.status
|
|
233
|
+
if args.priority:
|
|
234
|
+
update_params["priority"] = args.priority
|
|
235
|
+
|
|
236
|
+
valid, error = self.validator.validate_update_params(update_params)
|
|
237
|
+
if not valid:
|
|
238
|
+
print(self.formatter.format_error(error))
|
|
239
|
+
return CommandResult.error_result(error)
|
|
240
|
+
|
|
241
|
+
# Update ticket via service
|
|
242
|
+
result = self.crud_service.update_ticket(
|
|
243
|
+
ticket_id=ticket_id,
|
|
244
|
+
status=args.status,
|
|
245
|
+
priority=args.priority,
|
|
246
|
+
description=description,
|
|
247
|
+
tags=tags,
|
|
248
|
+
assignees=assignees,
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
if result["success"]:
|
|
252
|
+
print(self.formatter.format_operation_result("update", ticket_id, True))
|
|
253
|
+
return CommandResult.success_result(result["message"])
|
|
254
|
+
print(self.formatter.format_operation_result("update", ticket_id, False))
|
|
255
|
+
return CommandResult.error_result(result["error"])
|
|
256
|
+
|
|
257
|
+
except Exception as e:
|
|
258
|
+
self.logger.error(f"Error updating ticket: {e}")
|
|
259
|
+
return CommandResult.error_result(f"Error updating ticket: {e}")
|
|
260
|
+
|
|
261
|
+
def _close_ticket(self, args) -> CommandResult:
|
|
262
|
+
"""Close a ticket using the CRUD service."""
|
|
263
|
+
try:
|
|
264
|
+
# Get ticket ID
|
|
265
|
+
ticket_id = getattr(args, "ticket_id", getattr(args, "id", None))
|
|
266
|
+
|
|
267
|
+
# Validate ticket ID
|
|
268
|
+
valid, error = self.validator.validate_ticket_id(ticket_id)
|
|
269
|
+
if not valid:
|
|
270
|
+
print(self.formatter.format_error(error))
|
|
271
|
+
return CommandResult.error_result(error)
|
|
272
|
+
|
|
273
|
+
# Get resolution
|
|
274
|
+
resolution = getattr(args, "resolution", getattr(args, "comment", None))
|
|
275
|
+
|
|
276
|
+
# Close ticket via service
|
|
277
|
+
result = self.crud_service.close_ticket(ticket_id, resolution)
|
|
278
|
+
|
|
279
|
+
if result["success"]:
|
|
280
|
+
print(self.formatter.format_operation_result("close", ticket_id, True))
|
|
281
|
+
return CommandResult.success_result(result["message"])
|
|
282
|
+
print(self.formatter.format_operation_result("close", ticket_id, False))
|
|
283
|
+
return CommandResult.error_result(result["error"])
|
|
284
|
+
|
|
285
|
+
except Exception as e:
|
|
286
|
+
self.logger.error(f"Error closing ticket: {e}")
|
|
287
|
+
return CommandResult.error_result(f"Error closing ticket: {e}")
|
|
288
|
+
|
|
289
|
+
def _delete_ticket(self, args) -> CommandResult:
|
|
290
|
+
"""Delete a ticket using the CRUD service."""
|
|
291
|
+
try:
|
|
292
|
+
# Get ticket ID
|
|
293
|
+
ticket_id = getattr(args, "ticket_id", getattr(args, "id", None))
|
|
294
|
+
|
|
295
|
+
# Validate ticket ID
|
|
296
|
+
valid, error = self.validator.validate_ticket_id(ticket_id)
|
|
297
|
+
if not valid:
|
|
298
|
+
print(self.formatter.format_error(error))
|
|
299
|
+
return CommandResult.error_result(error)
|
|
300
|
+
|
|
301
|
+
# Confirm deletion unless forced
|
|
302
|
+
if not args.force:
|
|
303
|
+
sys.stdout.flush()
|
|
304
|
+
|
|
305
|
+
# Check if we're in a TTY environment
|
|
306
|
+
if not sys.stdin.isatty():
|
|
307
|
+
print(
|
|
308
|
+
f"Are you sure you want to delete ticket {ticket_id}? (y/N): ",
|
|
309
|
+
end="",
|
|
310
|
+
flush=True,
|
|
311
|
+
)
|
|
312
|
+
try:
|
|
313
|
+
response = sys.stdin.readline().strip().lower()
|
|
314
|
+
response = response.replace("\r", "").replace("\n", "").strip()
|
|
315
|
+
except (EOFError, KeyboardInterrupt):
|
|
316
|
+
response = "n"
|
|
317
|
+
else:
|
|
318
|
+
try:
|
|
319
|
+
response = (
|
|
320
|
+
input(
|
|
321
|
+
f"Are you sure you want to delete ticket {ticket_id}? (y/N): "
|
|
322
|
+
)
|
|
323
|
+
.strip()
|
|
324
|
+
.lower()
|
|
325
|
+
)
|
|
326
|
+
except (EOFError, KeyboardInterrupt):
|
|
327
|
+
response = "n"
|
|
328
|
+
|
|
329
|
+
if response != "y":
|
|
330
|
+
print("Deletion cancelled")
|
|
331
|
+
return CommandResult.success_result("Deletion cancelled")
|
|
332
|
+
|
|
333
|
+
# Delete ticket via service
|
|
334
|
+
result = self.crud_service.delete_ticket(ticket_id, args.force)
|
|
335
|
+
|
|
336
|
+
if result["success"]:
|
|
337
|
+
print(self.formatter.format_operation_result("delete", ticket_id, True))
|
|
338
|
+
return CommandResult.success_result(result["message"])
|
|
339
|
+
print(self.formatter.format_operation_result("delete", ticket_id, False))
|
|
340
|
+
return CommandResult.error_result(result["error"])
|
|
341
|
+
|
|
342
|
+
except Exception as e:
|
|
343
|
+
self.logger.error(f"Error deleting ticket: {e}")
|
|
344
|
+
return CommandResult.error_result(f"Error deleting ticket: {e}")
|
|
345
|
+
|
|
346
|
+
def _search_tickets(self, args) -> CommandResult:
|
|
347
|
+
"""Search tickets using the search service."""
|
|
348
|
+
try:
|
|
349
|
+
# Validate search query
|
|
350
|
+
valid, error = self.validator.validate_search_query(args.query)
|
|
351
|
+
if not valid:
|
|
352
|
+
print(self.formatter.format_error(error))
|
|
353
|
+
return CommandResult.error_result(error)
|
|
354
|
+
|
|
355
|
+
# Search tickets via service
|
|
356
|
+
tickets = self.search_service.search_tickets(
|
|
357
|
+
query=args.query,
|
|
358
|
+
type_filter=args.type if args.type else "all",
|
|
359
|
+
status_filter=args.status if args.status else "all",
|
|
360
|
+
limit=args.limit,
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
# Format and display results
|
|
364
|
+
output_lines = self.formatter.format_search_results(
|
|
365
|
+
tickets, args.query, show_snippets=True
|
|
366
|
+
)
|
|
367
|
+
for line in output_lines:
|
|
368
|
+
print(line)
|
|
369
|
+
|
|
370
|
+
return CommandResult.success_result("Tickets searched successfully")
|
|
371
|
+
|
|
372
|
+
except Exception as e:
|
|
373
|
+
self.logger.error(f"Error searching tickets: {e}")
|
|
374
|
+
return CommandResult.error_result(f"Error searching tickets: {e}")
|
|
375
|
+
|
|
376
|
+
def _add_comment(self, args) -> CommandResult:
|
|
377
|
+
"""Add a comment to a ticket using the workflow service."""
|
|
378
|
+
try:
|
|
379
|
+
# Get ticket ID
|
|
380
|
+
ticket_id = getattr(args, "ticket_id", getattr(args, "id", None))
|
|
381
|
+
|
|
382
|
+
# Validate ticket ID
|
|
383
|
+
valid, error = self.validator.validate_ticket_id(ticket_id)
|
|
384
|
+
if not valid:
|
|
385
|
+
print(self.formatter.format_error(error))
|
|
386
|
+
return CommandResult.error_result(error)
|
|
387
|
+
|
|
388
|
+
# Prepare comment
|
|
389
|
+
comment = self.validator.sanitize_description(args.comment)
|
|
390
|
+
|
|
391
|
+
# Validate comment
|
|
392
|
+
valid, error = self.validator.validate_comment(comment)
|
|
393
|
+
if not valid:
|
|
394
|
+
print(self.formatter.format_error(error))
|
|
395
|
+
return CommandResult.error_result(error)
|
|
396
|
+
|
|
397
|
+
# Add comment via service
|
|
398
|
+
result = self.workflow_service.add_comment(ticket_id, comment)
|
|
399
|
+
|
|
400
|
+
if result["success"]:
|
|
401
|
+
print(
|
|
402
|
+
self.formatter.format_operation_result("comment", ticket_id, True)
|
|
403
|
+
)
|
|
404
|
+
return CommandResult.success_result(result["message"])
|
|
405
|
+
print(self.formatter.format_operation_result("comment", ticket_id, False))
|
|
406
|
+
return CommandResult.error_result(result["error"])
|
|
407
|
+
|
|
408
|
+
except Exception as e:
|
|
409
|
+
self.logger.error(f"Error adding comment: {e}")
|
|
410
|
+
return CommandResult.error_result(f"Error adding comment: {e}")
|
|
411
|
+
|
|
412
|
+
def _update_workflow(self, args) -> CommandResult:
|
|
413
|
+
"""Update workflow state using the workflow service."""
|
|
414
|
+
try:
|
|
415
|
+
# Get ticket ID
|
|
416
|
+
ticket_id = getattr(args, "ticket_id", getattr(args, "id", None))
|
|
417
|
+
|
|
418
|
+
# Validate ticket ID
|
|
419
|
+
valid, error = self.validator.validate_ticket_id(ticket_id)
|
|
420
|
+
if not valid:
|
|
421
|
+
print(self.formatter.format_error(error))
|
|
422
|
+
return CommandResult.error_result(error)
|
|
423
|
+
|
|
424
|
+
# Validate workflow state
|
|
425
|
+
valid, error = self.validator.validate_workflow_state(args.state)
|
|
426
|
+
if not valid:
|
|
427
|
+
print(self.formatter.format_error(error))
|
|
428
|
+
return CommandResult.error_result(error)
|
|
429
|
+
|
|
430
|
+
# Get optional comment
|
|
431
|
+
comment = getattr(args, "comment", None)
|
|
432
|
+
|
|
433
|
+
# Update workflow via service
|
|
434
|
+
result = self.workflow_service.transition_ticket(
|
|
435
|
+
ticket_id, args.state, comment
|
|
436
|
+
)
|
|
437
|
+
|
|
438
|
+
if result["success"]:
|
|
439
|
+
print(
|
|
440
|
+
self.formatter.format_operation_result(
|
|
441
|
+
"workflow", ticket_id, True, result["message"]
|
|
442
|
+
)
|
|
443
|
+
)
|
|
444
|
+
return CommandResult.success_result(result["message"])
|
|
445
|
+
print(self.formatter.format_operation_result("workflow", ticket_id, False))
|
|
446
|
+
return CommandResult.error_result(result["error"])
|
|
447
|
+
|
|
448
|
+
except Exception as e:
|
|
449
|
+
self.logger.error(f"Error updating workflow: {e}")
|
|
450
|
+
return CommandResult.error_result(f"Error updating workflow: {e}")
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
# ========================================
|
|
454
|
+
# Backward compatibility functions
|
|
455
|
+
# ========================================
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
def manage_tickets(args):
|
|
459
|
+
"""
|
|
460
|
+
Main entry point for tickets command.
|
|
461
|
+
|
|
462
|
+
This function maintains backward compatibility while using the new BaseCommand pattern.
|
|
463
|
+
"""
|
|
464
|
+
command = TicketsCommand()
|
|
465
|
+
result = command.execute(args)
|
|
466
|
+
|
|
467
|
+
# Print result if structured output format is requested
|
|
468
|
+
if hasattr(args, "format") and args.format in ["json", "yaml"]:
|
|
469
|
+
command.print_result(result, args)
|
|
470
|
+
|
|
471
|
+
return result.exit_code
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
def list_tickets(args):
|
|
475
|
+
"""
|
|
476
|
+
Compatibility function for list_tickets.
|
|
477
|
+
|
|
478
|
+
This maintains backward compatibility for imports while using the new TicketsCommand pattern.
|
|
479
|
+
"""
|
|
480
|
+
# Create a tickets command and execute the list subcommand
|
|
481
|
+
args.tickets_command = TicketCommands.LIST.value
|
|
482
|
+
return manage_tickets(args)
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
# ========================================
|
|
486
|
+
# Legacy function stubs for compatibility
|
|
487
|
+
# ========================================
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
def manage_tickets_legacy(args):
|
|
491
|
+
"""Legacy wrapper - redirects to new implementation."""
|
|
492
|
+
return manage_tickets(args)
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
def create_ticket_legacy(args):
|
|
496
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
497
|
+
args.tickets_command = TicketCommands.CREATE.value
|
|
498
|
+
return manage_tickets(args)
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
def list_tickets_legacy(args):
|
|
502
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
503
|
+
args.tickets_command = TicketCommands.LIST.value
|
|
504
|
+
return manage_tickets(args)
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
def view_ticket_legacy(args):
|
|
508
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
509
|
+
args.tickets_command = TicketCommands.VIEW.value
|
|
510
|
+
return manage_tickets(args)
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
def update_ticket_legacy(args):
|
|
514
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
515
|
+
args.tickets_command = TicketCommands.UPDATE.value
|
|
516
|
+
return manage_tickets(args)
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
def close_ticket_legacy(args):
|
|
520
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
521
|
+
args.tickets_command = TicketCommands.CLOSE.value
|
|
522
|
+
return manage_tickets(args)
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
def delete_ticket_legacy(args):
|
|
526
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
527
|
+
args.tickets_command = TicketCommands.DELETE.value
|
|
528
|
+
return manage_tickets(args)
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
def search_tickets_legacy(args):
|
|
532
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
533
|
+
args.tickets_command = TicketCommands.SEARCH.value
|
|
534
|
+
return manage_tickets(args)
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
def add_comment_legacy(args):
|
|
538
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
539
|
+
args.tickets_command = TicketCommands.COMMENT.value
|
|
540
|
+
return manage_tickets(args)
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
def update_workflow_legacy(args):
|
|
544
|
+
"""Legacy wrapper - uses new service implementation."""
|
|
545
|
+
args.tickets_command = TicketCommands.WORKFLOW.value
|
|
546
|
+
return manage_tickets(args)
|