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.
Files changed (569) hide show
  1. claude_mpm-4.1.5/BUILD_NUMBER +1 -0
  2. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/CLAUDE.md +1 -38
  3. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/PKG-INFO +1 -1
  4. claude_mpm-4.1.5/VERSION +1 -0
  5. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/pyproject.toml +2 -2
  6. claude_mpm-4.1.5/src/claude_mpm/VERSION +1 -0
  7. claude_mpm-4.1.5/src/claude_mpm/cli/commands/tickets.py +546 -0
  8. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/output_style_manager.py +24 -0
  9. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/unified_agent_registry.py +46 -15
  10. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_discovery_service.py +12 -3
  11. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +172 -233
  12. claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager_refactored.py +575 -0
  13. claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_operation_service.py +573 -0
  14. claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_record_service.py +419 -0
  15. claude_mpm-4.1.5/src/claude_mpm/services/agents/deployment/agent_state_service.py +381 -0
  16. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/multi_source_deployment_service.py +4 -2
  17. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/__init__.py +52 -0
  18. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/__init__.py +43 -0
  19. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/aggregator.py +437 -0
  20. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/base.py +130 -0
  21. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/legacy.py +203 -0
  22. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/network.py +218 -0
  23. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/process.py +342 -0
  24. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/resources.py +243 -0
  25. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring/service.py +367 -0
  26. claude_mpm-4.1.5/src/claude_mpm/services/infrastructure/monitoring.py +71 -0
  27. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/project/analyzer.py +13 -4
  28. claude_mpm-4.1.5/src/claude_mpm/services/project/analyzer_refactored.py +450 -0
  29. claude_mpm-4.1.5/src/claude_mpm/services/project/analyzer_v2.py +566 -0
  30. claude_mpm-4.1.5/src/claude_mpm/services/project/architecture_analyzer.py +461 -0
  31. claude_mpm-4.1.5/src/claude_mpm/services/project/dependency_analyzer.py +462 -0
  32. claude_mpm-4.1.5/src/claude_mpm/services/project/language_analyzer.py +265 -0
  33. claude_mpm-4.1.5/src/claude_mpm/services/project/metrics_collector.py +410 -0
  34. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/ticket_manager.py +5 -1
  35. claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/__init__.py +26 -0
  36. claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/crud_service.py +328 -0
  37. claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/formatter_service.py +290 -0
  38. claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/search_service.py +324 -0
  39. claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/validation_service.py +303 -0
  40. claude_mpm-4.1.5/src/claude_mpm/services/ticket_services/workflow_service.py +244 -0
  41. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/PKG-INFO +1 -1
  42. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/SOURCES.txt +24 -0
  43. claude_mpm-4.1.4/BUILD_NUMBER +0 -1
  44. claude_mpm-4.1.4/VERSION +0 -1
  45. claude_mpm-4.1.4/src/claude_mpm/VERSION +0 -1
  46. claude_mpm-4.1.4/src/claude_mpm/cli/commands/tickets.py +0 -965
  47. claude_mpm-4.1.4/src/claude_mpm/services/infrastructure/__init__.py +0 -26
  48. claude_mpm-4.1.4/src/claude_mpm/services/infrastructure/monitoring.py +0 -1034
  49. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/LICENSE +0 -0
  50. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/MANIFEST.in +0 -0
  51. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/README.md +0 -0
  52. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/scripts/ticket +0 -0
  53. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/setup.cfg +0 -0
  54. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/BUILD_NUMBER +0 -0
  55. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/__init__.py +0 -0
  56. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/__main__.py +0 -0
  57. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
  58. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/BASE_PM.md +0 -0
  59. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/INSTRUCTIONS.md +0 -0
  60. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/MEMORY.md +0 -0
  61. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/OUTPUT_STYLE.md +0 -0
  62. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/WORKFLOW.md +0 -0
  63. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/__init__.py +0 -0
  64. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agent-template.yaml +0 -0
  65. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agent_loader.py +0 -0
  66. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
  67. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/agents_metadata.py +0 -0
  68. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/async_agent_loader.py +0 -0
  69. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/backups/INSTRUCTIONS.md +0 -0
  70. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/base_agent.json +0 -0
  71. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/base_agent_loader.py +0 -0
  72. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/frontmatter_validator.py +0 -0
  73. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/schema/agent_schema.json +0 -0
  74. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/system_agent_config.py +0 -0
  75. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/OPTIMIZATION_REPORT.md +0 -0
  76. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/__init__.py +0 -0
  77. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/agent-manager.json +0 -0
  78. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/agent-manager.md +0 -0
  79. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/api_qa.json +0 -0
  80. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +0 -0
  81. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +0 -0
  82. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +0 -0
  83. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +0 -0
  84. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +0 -0
  85. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/research_agent_2025011_234551.json +0 -0
  86. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +0 -0
  87. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/research_memory_efficient.json +0 -0
  88. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +0 -0
  89. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +0 -0
  90. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/code_analyzer.json +0 -0
  91. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/data_engineer.json +0 -0
  92. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/documentation.json +0 -0
  93. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/engineer.json +0 -0
  94. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/imagemagick.json +0 -0
  95. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/memory_manager.json +0 -0
  96. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/ops.json +0 -0
  97. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/project_organizer.json +0 -0
  98. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/qa.json +0 -0
  99. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/refactoring_engineer.json +0 -0
  100. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/research.json +0 -0
  101. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/security.json +0 -0
  102. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/ticketing.json +0 -0
  103. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/vercel_ops_agent.json +0 -0
  104. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/vercel_ops_instructions.md +0 -0
  105. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/version_control.json +0 -0
  106. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/web_qa.json +0 -0
  107. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/agents/templates/web_ui.json +0 -0
  108. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/__init__.py +0 -0
  109. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/__main__.py +0 -0
  110. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/__init__.py +0 -0
  111. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/agent_manager.py +0 -0
  112. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/agents.py +0 -0
  113. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/aggregate.py +0 -0
  114. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/cleanup.py +0 -0
  115. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/cleanup_orphaned_agents.py +0 -0
  116. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/config.py +0 -0
  117. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/doctor.py +0 -0
  118. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/info.py +0 -0
  119. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp.py +0 -0
  120. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_command_router.py +0 -0
  121. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_config_commands.py +0 -0
  122. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_install_commands.py +0 -0
  123. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_pipx_config.py +0 -0
  124. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_server_commands.py +0 -0
  125. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/mcp_tool_commands.py +0 -0
  126. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/memory.py +0 -0
  127. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/monitor.py +0 -0
  128. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/run.py +0 -0
  129. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/commands/socketio_monitor.py +0 -0
  130. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parser.py +0 -0
  131. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/__init__.py +0 -0
  132. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/agent_manager_parser.py +0 -0
  133. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/agents_parser.py +0 -0
  134. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/base_parser.py +0 -0
  135. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/config_parser.py +0 -0
  136. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/mcp_parser.py +0 -0
  137. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/memory_parser.py +0 -0
  138. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/monitor_parser.py +0 -0
  139. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/run_parser.py +0 -0
  140. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/parsers/tickets_parser.py +0 -0
  141. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/__init__.py +0 -0
  142. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/argument_patterns.py +0 -0
  143. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/base_command.py +0 -0
  144. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/error_handling.py +0 -0
  145. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/shared/output_formatters.py +0 -0
  146. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/startup_logging.py +0 -0
  147. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/ticket_cli.py +0 -0
  148. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli/utils.py +0 -0
  149. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/__init__.py +0 -0
  150. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/args.py +0 -0
  151. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/commands.py +0 -0
  152. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/cli_module/migration_example.py +0 -0
  153. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/__init__.py +0 -0
  154. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/agent_config.py +0 -0
  155. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/experimental_features.py +0 -0
  156. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/paths.py +0 -0
  157. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/config/socketio_config.py +0 -0
  158. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/constants.py +0 -0
  159. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/__init__.py +0 -0
  160. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
  161. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/agent_registry.py +0 -0
  162. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/agent_session_manager.py +0 -0
  163. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/base_service.py +0 -0
  164. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/cache.py +0 -0
  165. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/claude_runner.py +0 -0
  166. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/config.py +0 -0
  167. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/config_aliases.py +0 -0
  168. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/config_constants.py +0 -0
  169. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/constants.py +0 -0
  170. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/container.py +0 -0
  171. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/exceptions.py +0 -0
  172. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/factories.py +0 -0
  173. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/framework_loader.py +0 -0
  174. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/hook_manager.py +0 -0
  175. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/hook_performance_config.py +0 -0
  176. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/injectable_service.py +0 -0
  177. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/interactive_session.py +0 -0
  178. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/interfaces.py +0 -0
  179. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/lazy.py +0 -0
  180. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/log_manager.py +0 -0
  181. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/logger.py +0 -0
  182. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/logging_config.py +0 -0
  183. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
  184. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/mixins.py +0 -0
  185. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/oneshot_session.py +0 -0
  186. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/optimized_agent_loader.py +0 -0
  187. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/optimized_startup.py +0 -0
  188. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
  189. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/service_registry.py +0 -0
  190. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/session_manager.py +0 -0
  191. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/__init__.py +0 -0
  192. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/config_loader.py +0 -0
  193. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/path_resolver.py +0 -0
  194. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/shared/singleton_manager.py +0 -0
  195. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/socketio_pool.py +0 -0
  196. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/tool_access_control.py +0 -0
  197. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/types.py +0 -0
  198. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/typing_utils.py +0 -0
  199. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/unified_config.py +0 -0
  200. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/core/unified_paths.py +0 -0
  201. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/index.html +0 -0
  202. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/open_dashboard.py +0 -0
  203. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/agent-inference.js +0 -0
  204. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/event-processor.js +0 -0
  205. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/event-viewer.js +0 -0
  206. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/export-manager.js +0 -0
  207. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -0
  208. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -0
  209. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/hud-manager.js +0 -0
  210. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -0
  211. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/module-viewer.js +0 -0
  212. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/session-manager.js +0 -0
  213. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/socket-manager.js +0 -0
  214. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -0
  215. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/components/working-directory.js +0 -0
  216. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/dashboard.js +0 -0
  217. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/built/socket-client.js +0 -0
  218. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/css/dashboard.css +0 -0
  219. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -0
  220. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/event-processor.js +0 -0
  221. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -0
  222. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/export-manager.js +0 -0
  223. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -0
  224. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -0
  225. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -0
  226. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -0
  227. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -0
  228. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/session-manager.js +0 -0
  229. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -0
  230. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -0
  231. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/components/working-directory.js +0 -0
  232. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/dashboard.js +0 -0
  233. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/dist/socket-client.js +0 -0
  234. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -0
  235. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/agent-inference.js +0 -0
  236. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/build-tracker.js +0 -0
  237. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/event-processor.js +0 -0
  238. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/event-viewer.js +0 -0
  239. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/export-manager.js +0 -0
  240. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -0
  241. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -0
  242. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/hud-manager.js +0 -0
  243. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -0
  244. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/module-viewer.js +0 -0
  245. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/session-manager.js +0 -0
  246. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/socket-manager.js +0 -0
  247. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -0
  248. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/components/working-directory.js +0 -0
  249. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/dashboard.js +0 -0
  250. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/extension-error-handler.js +0 -0
  251. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/static/js/socket-client.js +0 -0
  252. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/templates/index.html +0 -0
  253. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/dashboard/test_dashboard.html +0 -0
  254. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
  255. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/generators/__init__.py +0 -0
  256. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
  257. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/__init__.py +0 -0
  258. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/base_hook.py +0 -0
  259. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
  260. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/connection_pool.py +0 -0
  261. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/event_handlers.py +0 -0
  262. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +0 -0
  263. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py +0 -0
  264. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler_original.py +0 -0
  265. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_handler_refactored.py +0 -0
  266. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +0 -0
  267. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/memory_integration.py +0 -0
  268. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/response_tracking.py +0 -0
  269. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/__init__.py +0 -0
  270. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/connection_manager.py +0 -0
  271. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/duplicate_detector.py +0 -0
  272. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/state_manager.py +0 -0
  273. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/services/subagent_processor.py +0 -0
  274. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/claude_hooks/tool_analysis.py +0 -0
  275. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/memory_integration_hook.py +0 -0
  276. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
  277. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/hooks/validation_hooks.py +0 -0
  278. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/init.py +0 -0
  279. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/models/__init__.py +0 -0
  280. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/models/agent_definition.py +0 -0
  281. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/models/agent_session.py +0 -0
  282. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/__init__.py +0 -0
  283. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/mcp_server.py +0 -0
  284. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/mcp_wrapper.py +0 -0
  285. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/mpm_doctor.py +0 -0
  286. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/socketio_daemon.py +0 -0
  287. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/socketio_daemon_hardened.py +0 -0
  288. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/socketio_server_manager.py +0 -0
  289. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/scripts/start_activity_logging.py +0 -0
  290. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/__init__.py +0 -0
  291. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agent_capabilities_service.py +0 -0
  292. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/__init__.py +0 -0
  293. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/agent_builder.py +0 -0
  294. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/__init__.py +0 -0
  295. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_config_provider.py +0 -0
  296. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_configuration_manager.py +0 -0
  297. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_definition_factory.py +0 -0
  298. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_deployment.py +0 -0
  299. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_environment_manager.py +0 -0
  300. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_filesystem_manager.py +0 -0
  301. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_format_converter.py +0 -0
  302. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +0 -0
  303. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_metrics_collector.py +0 -0
  304. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_restore_handler.py +0 -0
  305. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_template_builder.py +0 -0
  306. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_validator.py +0 -0
  307. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_version_manager.py +0 -0
  308. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agent_versioning.py +0 -0
  309. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/agents_directory_resolver.py +0 -0
  310. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/async_agent_deployment.py +0 -0
  311. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/base_agent_locator.py +0 -0
  312. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/config/__init__.py +0 -0
  313. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/config/deployment_config.py +0 -0
  314. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/config/deployment_config_manager.py +0 -0
  315. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_config_loader.py +0 -0
  316. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_results_manager.py +0 -0
  317. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_type_detector.py +0 -0
  318. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/deployment_wrapper.py +0 -0
  319. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/__init__.py +0 -0
  320. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +0 -0
  321. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/deployment_executor.py +0 -0
  322. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/deployment_facade.py +0 -0
  323. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +0 -0
  324. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/interface_adapter.py +0 -0
  325. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/lifecycle_health_checker.py +0 -0
  326. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +0 -0
  327. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/__init__.py +0 -0
  328. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +0 -0
  329. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +0 -0
  330. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +0 -0
  331. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +0 -0
  332. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +0 -0
  333. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +0 -0
  334. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +0 -0
  335. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +0 -0
  336. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +0 -0
  337. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/__init__.py +0 -0
  338. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +0 -0
  339. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +0 -0
  340. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/processors/agent_processor.py +0 -0
  341. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +0 -0
  342. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/results/__init__.py +0 -0
  343. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/results/deployment_metrics.py +0 -0
  344. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/results/deployment_result_builder.py +0 -0
  345. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/single_agent_deployer.py +0 -0
  346. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/__init__.py +0 -0
  347. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/base_strategy.py +0 -0
  348. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/project_strategy.py +0 -0
  349. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/strategy_selector.py +0 -0
  350. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/system_strategy.py +0 -0
  351. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/strategies/user_strategy.py +0 -0
  352. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/system_instructions_deployer.py +0 -0
  353. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/__init__.py +0 -0
  354. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/agent_validator.py +0 -0
  355. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/deployment_validator.py +0 -0
  356. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/template_validator.py +0 -0
  357. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/deployment/validation/validation_result.py +0 -0
  358. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/__init__.py +0 -0
  359. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/agent_profile_loader.py +0 -0
  360. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/base_agent_manager.py +0 -0
  361. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/loading/framework_agent_loader.py +0 -0
  362. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/management/__init__.py +0 -0
  363. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/management/agent_capabilities_generator.py +0 -0
  364. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/management/agent_management_service.py +0 -0
  365. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/__init__.py +0 -0
  366. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/agent_memory_manager.py +0 -0
  367. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/agent_persistence_service.py +0 -0
  368. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/content_manager.py +0 -0
  369. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_categorization_service.py +0 -0
  370. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_file_service.py +0 -0
  371. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_format_service.py +0 -0
  372. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/memory_limits_service.py +0 -0
  373. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/memory/template_generator.py +0 -0
  374. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/registry/__init__.py +0 -0
  375. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/registry/deployed_agent_discovery.py +0 -0
  376. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/agents/registry/modification_tracker.py +0 -0
  377. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/async_session_logger.py +0 -0
  378. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/claude_session_logger.py +0 -0
  379. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/__init__.py +0 -0
  380. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_cleanup_service.py +0 -0
  381. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_dependency_service.py +0 -0
  382. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_listing_service.py +0 -0
  383. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_output_formatter.py +0 -0
  384. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/agent_validation_service.py +0 -0
  385. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/dashboard_launcher.py +0 -0
  386. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/memory_crud_service.py +0 -0
  387. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/memory_output_formatter.py +0 -0
  388. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/session_manager.py +0 -0
  389. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/socketio_manager.py +0 -0
  390. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/cli/startup_checker.py +0 -0
  391. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/command_deployment_service.py +0 -0
  392. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/command_handler_service.py +0 -0
  393. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/communication/__init__.py +0 -0
  394. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/__init__.py +0 -0
  395. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/base.py +0 -0
  396. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/cache_manager.py +0 -0
  397. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/__init__.py +0 -0
  398. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/agent.py +0 -0
  399. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/communication.py +0 -0
  400. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/infrastructure.py +0 -0
  401. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces/service.py +0 -0
  402. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/interfaces.py +0 -0
  403. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/memory_manager.py +0 -0
  404. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/path_resolver.py +0 -0
  405. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/service_container.py +0 -0
  406. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/core/service_interfaces.py +0 -0
  407. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/__init__.py +0 -0
  408. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/__init__.py +0 -0
  409. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/agent_check.py +0 -0
  410. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/base_check.py +0 -0
  411. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/claude_desktop_check.py +0 -0
  412. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/common_issues_check.py +0 -0
  413. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/configuration_check.py +0 -0
  414. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/filesystem_check.py +0 -0
  415. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/installation_check.py +0 -0
  416. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/mcp_check.py +0 -0
  417. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/monitor_check.py +0 -0
  418. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/checks/startup_log_check.py +0 -0
  419. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/diagnostic_runner.py +0 -0
  420. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/doctor_reporter.py +0 -0
  421. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/diagnostics/models.py +0 -0
  422. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_aggregator.py +0 -0
  423. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/__init__.py +0 -0
  424. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/config.py +0 -0
  425. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/event_bus.py +0 -0
  426. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/event_bus/relay.py +0 -0
  427. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/__init__.py +0 -0
  428. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/__init__.py +0 -0
  429. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/dead_letter.py +0 -0
  430. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/logging.py +0 -0
  431. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/metrics.py +0 -0
  432. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/consumers/socketio.py +0 -0
  433. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/core.py +0 -0
  434. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/interfaces.py +0 -0
  435. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/producers/__init__.py +0 -0
  436. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/producers/hook.py +0 -0
  437. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/events/producers/system.py +0 -0
  438. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/exceptions.py +0 -0
  439. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
  440. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
  441. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
  442. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
  443. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
  444. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
  445. {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
  446. {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
  447. {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
  448. {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
  449. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
  450. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
  451. {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
  452. {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
  453. {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
  454. {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
  455. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
  456. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
  457. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
  458. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/hook_service.py +0 -0
  459. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/infrastructure/context_preservation.py +0 -0
  460. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/infrastructure/daemon_manager.py +0 -0
  461. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/infrastructure/logging.py +0 -0
  462. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/__init__.py +0 -0
  463. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/auto_configure.py +0 -0
  464. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/__init__.py +0 -0
  465. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/config_loader.py +0 -0
  466. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/config_schema.py +0 -0
  467. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/config/configuration.py +0 -0
  468. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/__init__.py +0 -0
  469. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/base.py +0 -0
  470. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/exceptions.py +0 -0
  471. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/interfaces.py +0 -0
  472. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/process_pool.py +0 -0
  473. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -0
  474. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -0
  475. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/main.py +0 -0
  476. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/registry/__init__.py +0 -0
  477. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -0
  478. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -0
  479. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/__init__.py +0 -0
  480. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -0
  481. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -0
  482. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -0
  483. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/__init__.py +0 -0
  484. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -0
  485. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -0
  486. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -0
  487. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -0
  488. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -0
  489. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -0
  490. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/__init__.py +0 -0
  491. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/builder.py +0 -0
  492. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/cache/__init__.py +0 -0
  493. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/cache/shared_prompt_cache.py +0 -0
  494. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/cache/simple_cache.py +0 -0
  495. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/indexed_memory.py +0 -0
  496. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/optimizer.py +0 -0
  497. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory/router.py +0 -0
  498. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/memory_hook_service.py +0 -0
  499. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/monitor_build_service.py +0 -0
  500. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/port_manager.py +0 -0
  501. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/project/__init__.py +0 -0
  502. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/project/registry.py +0 -0
  503. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/recovery_manager.py +0 -0
  504. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/response_tracker.py +0 -0
  505. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/runner_configuration_service.py +0 -0
  506. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/session_management_service.py +0 -0
  507. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/__init__.py +0 -0
  508. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/async_service_base.py +0 -0
  509. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/config_service_base.py +0 -0
  510. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/lifecycle_service_base.py +0 -0
  511. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/manager_base.py +0 -0
  512. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/shared/service_factory.py +0 -0
  513. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/__init__.py +0 -0
  514. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/client_proxy.py +0 -0
  515. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/event_normalizer.py +0 -0
  516. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/__init__.py +0 -0
  517. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/base.py +0 -0
  518. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/connection.py +0 -0
  519. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/file.py +0 -0
  520. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/git.py +0 -0
  521. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/hook.py +0 -0
  522. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/memory.py +0 -0
  523. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/project.py +0 -0
  524. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/handlers/registry.py +0 -0
  525. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/migration_utils.py +0 -0
  526. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/__init__.py +0 -0
  527. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/broadcaster.py +0 -0
  528. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/core.py +0 -0
  529. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/eventbus_integration.py +0 -0
  530. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio/server/main.py +0 -0
  531. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio_client_manager.py +0 -0
  532. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/socketio_server.py +0 -0
  533. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/subprocess_launcher_service.py +0 -0
  534. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/system_instructions_service.py +0 -0
  535. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/utility_service.py +0 -0
  536. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/__init__.py +0 -0
  537. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
  538. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
  539. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/git_operations.py +0 -0
  540. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
  541. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_control/version_parser.py +0 -0
  542. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/services/version_service.py +0 -0
  543. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/storage/__init__.py +0 -0
  544. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/storage/state_storage.py +0 -0
  545. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/ticket_wrapper.py +0 -0
  546. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/__init__.py +0 -0
  547. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/agent_dependency_loader.py +0 -0
  548. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/config_manager.py +0 -0
  549. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/console.py +0 -0
  550. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/dependency_cache.py +0 -0
  551. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/dependency_manager.py +0 -0
  552. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/dependency_strategies.py +0 -0
  553. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/environment_context.py +0 -0
  554. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/error_handler.py +0 -0
  555. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/file_utils.py +0 -0
  556. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/framework_detection.py +0 -0
  557. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/import_migration_example.py +0 -0
  558. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/imports.py +0 -0
  559. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/path_operations.py +0 -0
  560. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/robust_installer.py +0 -0
  561. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/session_logging.py +0 -0
  562. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/utils/subprocess_utils.py +0 -0
  563. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/validation/__init__.py +0 -0
  564. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/validation/agent_validator.py +0 -0
  565. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm/validation/frontmatter_validator.py +0 -0
  566. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
  567. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/entry_points.txt +0 -0
  568. {claude_mpm-4.1.4 → claude_mpm-4.1.5}/src/claude_mpm.egg-info/requires.txt +0 -0
  569. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.1.4
3
+ Version: 4.1.5
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -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.4"
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.4"
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)