claude-mpm 3.4.0__tar.gz → 3.4.2__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 (224) hide show
  1. {claude_mpm-3.4.0/src/claude_mpm.egg-info → claude_mpm-3.4.2}/PKG-INFO +1 -1
  2. claude_mpm-3.4.2/VERSION +1 -0
  3. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/commands/memory.py +6 -1
  4. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/config.py +160 -0
  5. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +1 -1
  6. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/socketio_daemon.py +49 -9
  7. claude_mpm-3.4.2/src/claude_mpm/scripts/socketio_server_manager.py +753 -0
  8. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/__init__.py +18 -0
  9. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_memory_manager.py +7 -5
  10. claude_mpm-3.4.2/src/claude_mpm/services/exceptions.py +677 -0
  11. claude_mpm-3.4.2/src/claude_mpm/services/health_monitor.py +892 -0
  12. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/memory_builder.py +4 -2
  13. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/memory_optimizer.py +6 -2
  14. claude_mpm-3.4.2/src/claude_mpm/services/recovery_manager.py +670 -0
  15. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/socketio_server.py +188 -11
  16. claude_mpm-3.4.2/src/claude_mpm/services/standalone_socketio_server.py +1300 -0
  17. {claude_mpm-3.4.0 → claude_mpm-3.4.2/src/claude_mpm.egg-info}/PKG-INFO +1 -1
  18. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm.egg-info/SOURCES.txt +5 -2
  19. claude_mpm-3.4.0/VERSION +0 -1
  20. claude_mpm-3.4.0/src/claude_mpm/scripts/socketio_server_manager.py +0 -428
  21. claude_mpm-3.4.0/src/claude_mpm/services/standalone_socketio_server.py +0 -631
  22. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/CLAUDE.md +0 -0
  23. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/LICENSE +0 -0
  24. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/MANIFEST.in +0 -0
  25. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/README.md +0 -0
  26. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/claude-mpm +0 -0
  27. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/pyproject.toml +0 -0
  28. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/requirements.txt +0 -0
  29. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/scripts/run_mpm.py +0 -0
  30. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/scripts/ticket +0 -0
  31. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/setup.cfg +0 -0
  32. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/setup.py +0 -0
  33. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/__init__.py +0 -0
  34. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/__main__.py +0 -0
  35. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
  36. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/INSTRUCTIONS.md +0 -0
  37. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/__init__.py +0 -0
  38. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/agent_loader.py +0 -0
  39. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
  40. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/agents_metadata.py +0 -0
  41. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/backups/INSTRUCTIONS.md +0 -0
  42. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/base_agent.json +0 -0
  43. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/base_agent_loader.py +0 -0
  44. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/schema/agent_schema.json +0 -0
  45. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/system_agent_config.py +0 -0
  46. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/__init__.py +0 -0
  47. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +0 -0
  48. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +0 -0
  49. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +0 -0
  50. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +0 -0
  51. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +0 -0
  52. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +0 -0
  53. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +0 -0
  54. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +0 -0
  55. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/data_engineer.json +0 -0
  56. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/documentation.json +0 -0
  57. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/engineer.json +0 -0
  58. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/ops.json +0 -0
  59. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/pm.json +0 -0
  60. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/qa.json +0 -0
  61. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/research.json +0 -0
  62. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/security.json +0 -0
  63. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/test_integration.json +0 -0
  64. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/agents/templates/version_control.json +0 -0
  65. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/__init__.py +0 -0
  66. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/commands/__init__.py +0 -0
  67. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/commands/agents.py +0 -0
  68. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/commands/info.py +0 -0
  69. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/commands/run.py +0 -0
  70. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/commands/tickets.py +0 -0
  71. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/commands/ui.py +0 -0
  72. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/parser.py +0 -0
  73. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli/utils.py +0 -0
  74. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli_module/__init__.py +0 -0
  75. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli_module/args.py +0 -0
  76. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli_module/commands.py +0 -0
  77. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/cli_module/migration_example.py +0 -0
  78. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/config/__init__.py +0 -0
  79. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/config/socketio_config.py +0 -0
  80. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/constants.py +0 -0
  81. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/__init__.py +0 -0
  82. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
  83. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/agent_registry.py +0 -0
  84. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/agent_session_manager.py +0 -0
  85. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/base_service.py +0 -0
  86. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/claude_runner.py +0 -0
  87. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/config_aliases.py +0 -0
  88. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/container.py +0 -0
  89. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/factories.py +0 -0
  90. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/framework_loader.py +0 -0
  91. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/hook_manager.py +0 -0
  92. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/injectable_service.py +0 -0
  93. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/interfaces.py +0 -0
  94. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/logger.py +0 -0
  95. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
  96. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/mixins.py +0 -0
  97. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
  98. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/service_registry.py +0 -0
  99. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/session_manager.py +0 -0
  100. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/simple_runner.py +0 -0
  101. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/socketio_pool.py +0 -0
  102. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/core/tool_access_control.py +0 -0
  103. {claude_mpm-3.4.0/src/claude_mpm/web → claude_mpm-3.4.2/src/claude_mpm/dashboard}/open_dashboard.py +0 -0
  104. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/deployment_paths.py +0 -0
  105. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
  106. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/generators/__init__.py +0 -0
  107. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
  108. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/__init__.py +0 -0
  109. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/base_hook.py +0 -0
  110. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/__init__.py +0 -0
  111. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/logging_hook_example.py +0 -0
  112. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/memory_hooks_example.py +0 -0
  113. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/mpm_command_hook.py +0 -0
  114. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/post_delegation_hook_example.py +0 -0
  115. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/pre_delegation_hook_example.py +0 -0
  116. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/submit_hook_example.py +0 -0
  117. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/ticket_extraction_hook_example.py +0 -0
  118. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/todo_agent_prefix_hook.py +0 -0
  119. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/builtin/workflow_start_hook.py +0 -0
  120. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
  121. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +0 -0
  122. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/memory_integration_hook.py +0 -0
  123. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
  124. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/hooks/validation_hooks.py +0 -0
  125. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/init.py +0 -0
  126. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/models/__init__.py +0 -0
  127. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/models/agent_definition.py +0 -0
  128. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/__init__.py +0 -0
  129. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/direct_orchestrator.py +0 -0
  130. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/factory.py +0 -0
  131. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/hook_enabled_orchestrator.py +0 -0
  132. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/hook_integration_example.py +0 -0
  133. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/interactive_subprocess_orchestrator.py +0 -0
  134. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/orchestrator.py +0 -0
  135. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/pexpect_orchestrator.py +0 -0
  136. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/pty_orchestrator.py +0 -0
  137. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/simple_orchestrator.py +0 -0
  138. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/subprocess_orchestrator.py +0 -0
  139. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/system_prompt_orchestrator.py +0 -0
  140. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/orchestration/archive/wrapper_orchestrator.py +0 -0
  141. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/schemas/workflow_validator.py +0 -0
  142. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/__init__.py +0 -0
  143. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/claude-mpm-socketio +0 -0
  144. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/claude_mpm_monitor.html +0 -0
  145. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/install_socketio_server.py +0 -0
  146. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/launch_monitor.py +0 -0
  147. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/launch_socketio_dashboard.py +0 -0
  148. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/manage_version.py +0 -0
  149. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/scripts/ticket.py +0 -0
  150. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_capabilities_generator.py +0 -0
  151. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_deployment.py +0 -0
  152. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_lifecycle_manager.py +0 -0
  153. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_management_service.py +0 -0
  154. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_modification_tracker.py +0 -0
  155. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_persistence_service.py +0 -0
  156. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_profile_loader.py +0 -0
  157. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_registry.py +0 -0
  158. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/agent_versioning.py +0 -0
  159. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/base_agent_manager.py +0 -0
  160. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/deployed_agent_discovery.py +0 -0
  161. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_agent_loader.py +0 -0
  162. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
  163. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
  164. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
  165. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
  166. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
  167. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
  168. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +0 -0
  169. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +0 -0
  170. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +0 -0
  171. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +0 -0
  172. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
  173. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
  174. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +0 -0
  175. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +0 -0
  176. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +0 -0
  177. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +0 -0
  178. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
  179. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
  180. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
  181. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/framework_claude_md_generator.py +0 -0
  182. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/hook_service.py +0 -0
  183. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/memory_router.py +0 -0
  184. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/__init__.py +0 -0
  185. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/backup_manager.py +0 -0
  186. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/config_manager.py +0 -0
  187. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/deduplication_manager.py +0 -0
  188. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/framework_protector.py +0 -0
  189. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/operations.py +0 -0
  190. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/state_manager.py +0 -0
  191. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/template_deployer.py +0 -0
  192. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/validation_manager.py +0 -0
  193. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/version_control_helper.py +0 -0
  194. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/parent_directory_manager/version_manager.py +0 -0
  195. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/project_analyzer.py +0 -0
  196. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/shared_prompt_cache.py +0 -0
  197. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/socketio_client_manager.py +0 -0
  198. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/ticket_manager.py +0 -0
  199. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/ticket_manager_di.py +0 -0
  200. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/ticketing_service_original.py +0 -0
  201. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/version_control/__init__.py +0 -0
  202. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
  203. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
  204. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/version_control/git_operations.py +0 -0
  205. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
  206. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/ui/__init__.py +0 -0
  207. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/ui/rich_terminal_ui.py +0 -0
  208. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/ui/terminal_ui.py +0 -0
  209. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/__init__.py +0 -0
  210. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/config_manager.py +0 -0
  211. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/dependency_manager.py +0 -0
  212. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/error_handler.py +0 -0
  213. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/framework_detection.py +0 -0
  214. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/import_migration_example.py +0 -0
  215. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/imports.py +0 -0
  216. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/path_operations.py +0 -0
  217. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/utils/paths.py +0 -0
  218. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/validation/__init__.py +0 -0
  219. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm/validation/agent_validator.py +0 -0
  220. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
  221. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm.egg-info/entry_points.txt +0 -0
  222. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm.egg-info/requires.txt +0 -0
  223. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/src/claude_mpm.egg-info/top_level.txt +0 -0
  224. {claude_mpm-3.4.0 → claude_mpm-3.4.2}/ticket +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.4.0
3
+ Version: 3.4.2
4
4
  Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
5
5
  Home-page: https://github.com/bobmatnyc/claude-mpm
6
6
  Author: Claude MPM Team
@@ -0,0 +1 @@
1
+ 3.4.2
@@ -10,6 +10,7 @@ with other command modules like agents.py.
10
10
  """
11
11
 
12
12
  import json
13
+ import os
13
14
  from datetime import datetime
14
15
  from pathlib import Path
15
16
 
@@ -38,7 +39,11 @@ def manage_memory(args):
38
39
  try:
39
40
  # Load configuration for memory manager
40
41
  config = Config()
41
- memory_manager = AgentMemoryManager(config)
42
+ # Use CLAUDE_MPM_USER_PWD if available (when called via shell script),
43
+ # otherwise use current working directory
44
+ user_pwd = os.environ.get('CLAUDE_MPM_USER_PWD', os.getcwd())
45
+ current_dir = Path(user_pwd)
46
+ memory_manager = AgentMemoryManager(config, current_dir)
42
47
 
43
48
  if not args.memory_command:
44
49
  # No subcommand - show status
@@ -166,9 +166,38 @@ class Config:
166
166
  # Health monitoring
167
167
  "enable_health_monitoring": True,
168
168
  "health_check_interval": 30,
169
+ "health_history_size": 100,
170
+ "health_aggregation_window": 300,
169
171
  # Metrics
170
172
  "enable_metrics": True,
171
173
  "metrics_interval": 60,
174
+ # Advanced health monitoring thresholds
175
+ "health_thresholds": {
176
+ "cpu_percent": 80.0,
177
+ "memory_mb": 500,
178
+ "file_descriptors": 1000,
179
+ "max_clients": 1000,
180
+ "max_error_rate": 0.1,
181
+ "network_timeout": 2.0
182
+ },
183
+ # Automatic recovery configuration
184
+ "recovery": {
185
+ "enabled": True,
186
+ "check_interval": 60,
187
+ "max_recovery_attempts": 5,
188
+ "recovery_timeout": 30,
189
+ "circuit_breaker": {
190
+ "failure_threshold": 5,
191
+ "timeout_seconds": 300,
192
+ "success_threshold": 3
193
+ },
194
+ "strategy": {
195
+ "warning_threshold": 2,
196
+ "critical_threshold": 1,
197
+ "failure_window_seconds": 300,
198
+ "min_recovery_interval": 60
199
+ }
200
+ },
172
201
  # Service management
173
202
  "graceful_shutdown_timeout": 30,
174
203
  "startup_timeout": 60,
@@ -247,6 +276,47 @@ class Config:
247
276
  "auto_learning": True # Enable auto learning
248
277
  }
249
278
  }
279
+ },
280
+ # Socket.IO server health and recovery configuration
281
+ "socketio_server": {
282
+ "host": "localhost",
283
+ "port": 8765,
284
+ "enable_health_monitoring": True,
285
+ "enable_recovery": True,
286
+ "health_monitoring": {
287
+ "check_interval": 30,
288
+ "history_size": 100,
289
+ "aggregation_window": 300,
290
+ "thresholds": {
291
+ "cpu_percent": 80.0,
292
+ "memory_mb": 500,
293
+ "file_descriptors": 1000,
294
+ "max_clients": 1000,
295
+ "max_error_rate": 0.1
296
+ }
297
+ },
298
+ "recovery": {
299
+ "enabled": True,
300
+ "max_attempts": 5,
301
+ "timeout": 30,
302
+ "circuit_breaker": {
303
+ "failure_threshold": 5,
304
+ "timeout_seconds": 300,
305
+ "success_threshold": 3
306
+ },
307
+ "strategy": {
308
+ "warning_threshold": 2,
309
+ "critical_threshold": 1,
310
+ "failure_window_seconds": 300,
311
+ "min_recovery_interval": 60
312
+ },
313
+ "actions": {
314
+ "log_warning": True,
315
+ "clear_connections": True,
316
+ "restart_service": True,
317
+ "emergency_stop": True
318
+ }
319
+ }
250
320
  }
251
321
  }
252
322
 
@@ -254,6 +324,9 @@ class Config:
254
324
  for key, default_value in defaults.items():
255
325
  if key not in self._config:
256
326
  self._config[key] = default_value
327
+
328
+ # Validate health and recovery configuration
329
+ self._validate_health_recovery_config()
257
330
 
258
331
  def get(self, key: str, default: Any = None) -> Any:
259
332
  """Get configuration value."""
@@ -349,6 +422,93 @@ class Config:
349
422
  """Check if configuration contains a key."""
350
423
  return self.get(key) is not None
351
424
 
425
+ def _validate_health_recovery_config(self) -> None:
426
+ """Validate health monitoring and recovery configuration."""
427
+ try:
428
+ # Validate health thresholds
429
+ thresholds = self.get('health_thresholds', {})
430
+ if thresholds.get('cpu_percent', 0) < 0 or thresholds.get('cpu_percent', 0) > 100:
431
+ logger.warning("CPU threshold should be between 0-100, using default 80")
432
+ self.set('health_thresholds.cpu_percent', 80.0)
433
+
434
+ if thresholds.get('memory_mb', 0) <= 0:
435
+ logger.warning("Memory threshold should be positive, using default 500MB")
436
+ self.set('health_thresholds.memory_mb', 500)
437
+
438
+ if thresholds.get('max_error_rate', 0) < 0 or thresholds.get('max_error_rate', 0) > 1:
439
+ logger.warning("Error rate threshold should be between 0-1, using default 0.1")
440
+ self.set('health_thresholds.max_error_rate', 0.1)
441
+
442
+ # Validate recovery configuration
443
+ recovery_config = self.get('recovery', {})
444
+ if recovery_config.get('max_recovery_attempts', 0) <= 0:
445
+ logger.warning("Max recovery attempts should be positive, using default 5")
446
+ self.set('recovery.max_recovery_attempts', 5)
447
+
448
+ # Validate circuit breaker configuration
449
+ cb_config = recovery_config.get('circuit_breaker', {})
450
+ if cb_config.get('failure_threshold', 0) <= 0:
451
+ logger.warning("Circuit breaker failure threshold should be positive, using default 5")
452
+ self.set('recovery.circuit_breaker.failure_threshold', 5)
453
+
454
+ if cb_config.get('timeout_seconds', 0) <= 0:
455
+ logger.warning("Circuit breaker timeout should be positive, using default 300")
456
+ self.set('recovery.circuit_breaker.timeout_seconds', 300)
457
+
458
+ except Exception as e:
459
+ logger.error(f"Error validating health/recovery configuration: {e}")
460
+
461
+ def get_health_monitoring_config(self) -> Dict[str, Any]:
462
+ """Get health monitoring configuration with defaults."""
463
+ base_config = {
464
+ 'enabled': self.get('enable_health_monitoring', True),
465
+ 'check_interval': self.get('health_check_interval', 30),
466
+ 'history_size': self.get('health_history_size', 100),
467
+ 'aggregation_window': self.get('health_aggregation_window', 300),
468
+ 'thresholds': self.get('health_thresholds', {
469
+ 'cpu_percent': 80.0,
470
+ 'memory_mb': 500,
471
+ 'file_descriptors': 1000,
472
+ 'max_clients': 1000,
473
+ 'max_error_rate': 0.1,
474
+ 'network_timeout': 2.0
475
+ })
476
+ }
477
+
478
+ # Merge with socketio-specific config if available
479
+ socketio_config = self.get('socketio_server.health_monitoring', {})
480
+ if socketio_config:
481
+ base_config.update(socketio_config)
482
+
483
+ return base_config
484
+
485
+ def get_recovery_config(self) -> Dict[str, Any]:
486
+ """Get recovery configuration with defaults."""
487
+ base_config = self.get('recovery', {
488
+ 'enabled': True,
489
+ 'check_interval': 60,
490
+ 'max_recovery_attempts': 5,
491
+ 'recovery_timeout': 30,
492
+ 'circuit_breaker': {
493
+ 'failure_threshold': 5,
494
+ 'timeout_seconds': 300,
495
+ 'success_threshold': 3
496
+ },
497
+ 'strategy': {
498
+ 'warning_threshold': 2,
499
+ 'critical_threshold': 1,
500
+ 'failure_window_seconds': 300,
501
+ 'min_recovery_interval': 60
502
+ }
503
+ })
504
+
505
+ # Merge with socketio-specific config if available
506
+ socketio_config = self.get('socketio_server.recovery', {})
507
+ if socketio_config:
508
+ base_config = self._config_mgr.merge_configs(base_config, socketio_config)
509
+
510
+ return base_config
511
+
352
512
  def __repr__(self) -> str:
353
513
  """String representation of configuration."""
354
514
  return f"<Config({len(self._config)} keys)>"
@@ -1,4 +1,4 @@
1
- #!/bin/bash
1
+ #!/usr/bin/env bash
2
2
  # Claude Code hook wrapper for claude-mpm
3
3
 
4
4
  # Debug log (optional - comment out in production)
@@ -43,11 +43,26 @@ def is_running():
43
43
  return False
44
44
 
45
45
  def start_server():
46
- """Start the Socket.IO server as a daemon."""
46
+ """Start the Socket.IO server as a daemon with conflict detection."""
47
47
  if is_running():
48
- print("Socket.IO server is already running.")
48
+ print("Socket.IO daemon server is already running.")
49
+ print(f"Use '{__file__} status' for details")
49
50
  return
50
51
 
52
+ # Check for HTTP-managed server conflict
53
+ try:
54
+ import requests
55
+ response = requests.get("http://localhost:8765/health", timeout=1.0)
56
+ if response.status_code == 200:
57
+ data = response.json()
58
+ if 'server_id' in data:
59
+ print(f"⚠️ HTTP-managed server already running: {data.get('server_id')}")
60
+ print(f" Stop it first: socketio_server_manager.py stop --port 8765")
61
+ print(f" Or diagnose: socketio_server_manager.py diagnose")
62
+ return
63
+ except:
64
+ pass # No HTTP server, continue
65
+
51
66
  ensure_dirs()
52
67
 
53
68
  # Fork to create daemon
@@ -96,9 +111,10 @@ def start_server():
96
111
  signal_handler(signal.SIGINT, None)
97
112
 
98
113
  def stop_server():
99
- """Stop the Socket.IO server."""
114
+ """Stop the Socket.IO daemon server."""
100
115
  if not is_running():
101
- print("Socket.IO server is not running.")
116
+ print("Socket.IO daemon server is not running.")
117
+ print(f"Check for other servers: socketio_server_manager.py status")
102
118
  return
103
119
 
104
120
  try:
@@ -125,11 +141,12 @@ def stop_server():
125
141
  print(f"Error stopping server: {e}")
126
142
 
127
143
  def status_server():
128
- """Check server status."""
144
+ """Check server status with manager integration info."""
129
145
  if is_running():
130
146
  with open(PID_FILE) as f:
131
147
  pid = int(f.read().strip())
132
- print(f"Socket.IO server is running (PID: {pid})")
148
+ print(f"Socket.IO daemon server is running (PID: {pid})")
149
+ print(f"PID file: {PID_FILE}")
133
150
 
134
151
  # Check if port is listening
135
152
  try:
@@ -138,13 +155,36 @@ def status_server():
138
155
  result = sock.connect_ex(('localhost', 8765))
139
156
  sock.close()
140
157
  if result == 0:
141
- print("Server is listening on port 8765")
158
+ print("Server is listening on port 8765")
159
+ print("🔧 Management style: daemon")
142
160
  else:
143
- print("WARNING: Server process exists but port 8765 is not accessible")
161
+ print("⚠️ WARNING: Server process exists but port 8765 is not accessible")
162
+ except:
163
+ pass
164
+
165
+ # Show management commands
166
+ print("\n🔧 Management Commands:")
167
+ print(f" • Stop: {__file__} stop")
168
+ print(f" • Restart: {__file__} restart")
169
+
170
+ # Check for manager conflicts
171
+ try:
172
+ import requests
173
+ response = requests.get("http://localhost:8765/health", timeout=1.0)
174
+ if response.status_code == 200:
175
+ data = response.json()
176
+ if 'server_id' in data and data.get('server_id') != 'daemon-socketio':
177
+ print(f"\n⚠️ POTENTIAL CONFLICT: HTTP-managed server also detected")
178
+ print(f" Server ID: {data.get('server_id')}")
179
+ print(f" Use 'socketio_server_manager.py diagnose' to resolve")
144
180
  except:
145
181
  pass
182
+
146
183
  else:
147
- print("Socket.IO server is not running")
184
+ print("Socket.IO daemon server is not running")
185
+ print(f"\n🔧 Start Commands:")
186
+ print(f" • Daemon: {__file__} start")
187
+ print(f" • HTTP-managed: socketio_server_manager.py start")
148
188
 
149
189
  def main():
150
190
  """Main entry point."""