claude-mpm 3.9.8__tar.gz → 3.9.11__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 (329) hide show
  1. {claude_mpm-3.9.8/src/claude_mpm.egg-info → claude_mpm-3.9.11}/PKG-INFO +27 -2
  2. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/README.md +25 -1
  3. claude_mpm-3.9.11/VERSION +1 -0
  4. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/pyproject.toml +1 -1
  5. claude_mpm-3.9.11/src/claude_mpm/VERSION +1 -0
  6. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/base_agent.json +1 -1
  7. claude_mpm-3.9.11/src/claude_mpm/agents/templates/memory_manager.json +155 -0
  8. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/__init__.py +18 -3
  9. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/__init__.py +6 -1
  10. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/cleanup.py +21 -1
  11. claude_mpm-3.9.11/src/claude_mpm/cli/commands/mcp.py +967 -0
  12. claude_mpm-3.9.11/src/claude_mpm/cli/commands/run_guarded.py +511 -0
  13. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/parser.py +156 -3
  14. claude_mpm-3.9.11/src/claude_mpm/config/experimental_features.py +219 -0
  15. claude_mpm-3.9.11/src/claude_mpm/config/memory_guardian_config.py +325 -0
  16. claude_mpm-3.9.11/src/claude_mpm/config/memory_guardian_yaml.py +335 -0
  17. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/constants.py +14 -0
  18. claude_mpm-3.9.11/src/claude_mpm/core/memory_aware_runner.py +353 -0
  19. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +76 -19
  20. claude_mpm-3.9.11/src/claude_mpm/models/state_models.py +433 -0
  21. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/communication/__init__.py +2 -2
  22. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/communication/socketio.py +18 -16
  23. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/infrastructure/__init__.py +4 -1
  24. claude_mpm-3.9.11/src/claude_mpm/services/infrastructure/context_preservation.py +537 -0
  25. claude_mpm-3.9.11/src/claude_mpm/services/infrastructure/graceful_degradation.py +616 -0
  26. claude_mpm-3.9.11/src/claude_mpm/services/infrastructure/health_monitor.py +775 -0
  27. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/infrastructure/logging.py +3 -3
  28. claude_mpm-3.9.11/src/claude_mpm/services/infrastructure/memory_dashboard.py +479 -0
  29. claude_mpm-3.9.11/src/claude_mpm/services/infrastructure/memory_guardian.py +944 -0
  30. claude_mpm-3.9.11/src/claude_mpm/services/infrastructure/restart_protection.py +642 -0
  31. claude_mpm-3.9.11/src/claude_mpm/services/infrastructure/state_manager.py +774 -0
  32. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/__init__.py +39 -23
  33. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/core/__init__.py +2 -2
  34. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/core/interfaces.py +10 -9
  35. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/main.py +356 -0
  36. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/manager.py +334 -0
  37. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/registry/__init__.py +12 -0
  38. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/registry/service_registry.py +393 -0
  39. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/registry/tool_registry.py +477 -0
  40. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/server/__init__.py +15 -0
  41. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/server/mcp_gateway.py +431 -0
  42. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/server/stdio_handler.py +373 -0
  43. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/tools/__init__.py +22 -0
  44. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/tools/base_adapter.py +496 -0
  45. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/tools/document_summarizer.py +729 -0
  46. claude_mpm-3.9.11/src/claude_mpm/services/mcp_gateway/tools/hello_world.py +551 -0
  47. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/ticket_manager.py +8 -8
  48. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/ticket_manager_di.py +5 -5
  49. claude_mpm-3.9.11/src/claude_mpm/storage/__init__.py +9 -0
  50. claude_mpm-3.9.11/src/claude_mpm/storage/state_storage.py +556 -0
  51. claude_mpm-3.9.11/src/claude_mpm/utils/file_utils.py +293 -0
  52. claude_mpm-3.9.11/src/claude_mpm/utils/platform_memory.py +524 -0
  53. claude_mpm-3.9.11/src/claude_mpm/utils/subprocess_utils.py +305 -0
  54. {claude_mpm-3.9.8 → claude_mpm-3.9.11/src/claude_mpm.egg-info}/PKG-INFO +27 -2
  55. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm.egg-info/SOURCES.txt +30 -6
  56. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm.egg-info/requires.txt +1 -0
  57. claude_mpm-3.9.8/VERSION +0 -1
  58. claude_mpm-3.9.8/src/claude_mpm/VERSION +0 -1
  59. claude_mpm-3.9.8/src/claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -36
  60. claude_mpm-3.9.8/src/claude_mpm/agents/templates/.claude-mpm/memories/engineer_agent.md +0 -39
  61. claude_mpm-3.9.8/src/claude_mpm/agents/templates/.claude-mpm/memories/qa_agent.md +0 -38
  62. claude_mpm-3.9.8/src/claude_mpm/agents/templates/.claude-mpm/memories/research_agent.md +0 -39
  63. claude_mpm-3.9.8/src/claude_mpm/agents/templates/.claude-mpm/memories/version_control_agent.md +0 -38
  64. claude_mpm-3.9.8/src/claude_mpm/services/mcp_gateway/registry/__init__.py +0 -9
  65. claude_mpm-3.9.8/src/claude_mpm/services/mcp_gateway/server/__init__.py +0 -9
  66. claude_mpm-3.9.8/src/claude_mpm/services/mcp_gateway/tools/__init__.py +0 -9
  67. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/CLAUDE.md +0 -0
  68. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/LICENSE +0 -0
  69. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/MANIFEST.in +0 -0
  70. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/claude-mpm +0 -0
  71. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/requirements.txt +0 -0
  72. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/scripts/run_mpm.py +0 -0
  73. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/scripts/ticket +0 -0
  74. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/setup.cfg +0 -0
  75. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/setup.py +0 -0
  76. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/__init__.py +0 -0
  77. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/__main__.py +0 -0
  78. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
  79. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/BASE_PM.md +0 -0
  80. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/INSTRUCTIONS.md +0 -0
  81. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/MEMORY.md +0 -0
  82. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/WORKFLOW.md +0 -0
  83. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/__init__.py +0 -0
  84. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/agent_loader.py +0 -0
  85. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
  86. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/agents_metadata.py +0 -0
  87. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/async_agent_loader.py +0 -0
  88. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/backups/INSTRUCTIONS.md +0 -0
  89. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/base_agent_loader.py +0 -0
  90. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/frontmatter_validator.py +0 -0
  91. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/schema/agent_schema.json +0 -0
  92. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/system_agent_config.py +0 -0
  93. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/__init__.py +0 -0
  94. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +0 -0
  95. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +0 -0
  96. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +0 -0
  97. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +0 -0
  98. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +0 -0
  99. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/research_agent_2025011_234551.json +0 -0
  100. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +0 -0
  101. {claude_mpm-3.9.8/src/claude_mpm/agents/templates → claude_mpm-3.9.11/src/claude_mpm/agents/templates/backup}/research_memory_efficient.json +0 -0
  102. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +0 -0
  103. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +0 -0
  104. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/code_analyzer.json +0 -0
  105. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/data_engineer.json +0 -0
  106. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/documentation.json +0 -0
  107. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/engineer.json +0 -0
  108. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/ops.json +0 -0
  109. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/project_organizer.json +0 -0
  110. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/qa.json +0 -0
  111. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/research.json +0 -0
  112. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/security.json +0 -0
  113. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/ticketing.json +0 -0
  114. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/version_control.json +0 -0
  115. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/web_qa.json +0 -0
  116. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/agents/templates/web_ui.json +0 -0
  117. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/__main__.py +0 -0
  118. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/agents.py +0 -0
  119. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/aggregate.py +0 -0
  120. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/config.py +0 -0
  121. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/info.py +0 -0
  122. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/memory.py +0 -0
  123. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/monitor.py +0 -0
  124. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/run.py +0 -0
  125. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/commands/tickets.py +0 -0
  126. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/ticket_cli.py +0 -0
  127. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli/utils.py +0 -0
  128. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli_module/__init__.py +0 -0
  129. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli_module/args.py +0 -0
  130. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli_module/commands.py +0 -0
  131. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/cli_module/migration_example.py +0 -0
  132. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/config/__init__.py +0 -0
  133. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/config/agent_config.py +0 -0
  134. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/config/paths.py +0 -0
  135. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/config/socketio_config.py +0 -0
  136. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/__init__.py +0 -0
  137. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
  138. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/agent_registry.py +0 -0
  139. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/agent_session_manager.py +0 -0
  140. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/base_service.py +0 -0
  141. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/cache.py +0 -0
  142. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/claude_runner.py +0 -0
  143. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/config.py +0 -0
  144. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/config_aliases.py +0 -0
  145. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/config_paths.py +0 -0
  146. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/constants.py +0 -0
  147. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/container.py +0 -0
  148. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/exceptions.py +0 -0
  149. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/factories.py +0 -0
  150. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/framework_loader.py +0 -0
  151. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/hook_manager.py +0 -0
  152. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/injectable_service.py +0 -0
  153. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/interactive_session.py +0 -0
  154. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/interfaces.py +0 -0
  155. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/lazy.py +0 -0
  156. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/logger.py +0 -0
  157. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/logging_config.py +0 -0
  158. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
  159. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/mixins.py +0 -0
  160. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/oneshot_session.py +0 -0
  161. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/optimized_agent_loader.py +0 -0
  162. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/optimized_startup.py +0 -0
  163. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
  164. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/service_registry.py +0 -0
  165. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/session_manager.py +0 -0
  166. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/socketio_pool.py +0 -0
  167. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/tool_access_control.py +0 -0
  168. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/types.py +0 -0
  169. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/core/typing_utils.py +0 -0
  170. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/index.html +0 -0
  171. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/open_dashboard.py +0 -0
  172. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/css/dashboard.css +0 -0
  173. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/agent-inference.js +0 -0
  174. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/event-processor.js +0 -0
  175. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/event-viewer.js +0 -0
  176. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/export-manager.js +0 -0
  177. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -0
  178. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -0
  179. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/hud-manager.js +0 -0
  180. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -0
  181. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/module-viewer.js +0 -0
  182. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/session-manager.js +0 -0
  183. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/socket-manager.js +0 -0
  184. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -0
  185. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/components/working-directory.js +0 -0
  186. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/dashboard-original.js +0 -0
  187. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/dashboard.js +0 -0
  188. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/static/js/socket-client.js +0 -0
  189. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/templates/index.html +0 -0
  190. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/dashboard/test_dashboard.html +0 -0
  191. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/deployment_paths.py +0 -0
  192. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
  193. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/generators/__init__.py +0 -0
  194. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
  195. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/__init__.py +0 -0
  196. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/base_hook.py +0 -0
  197. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
  198. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -0
  199. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +0 -0
  200. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/memory_integration_hook.py +0 -0
  201. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
  202. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/hooks/validation_hooks.py +0 -0
  203. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/init.py +0 -0
  204. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/models/__init__.py +0 -0
  205. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/models/agent_definition.py +0 -0
  206. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/models/agent_session.py +0 -0
  207. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/scripts/__init__.py +0 -0
  208. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/scripts/socketio_daemon.py +0 -0
  209. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/scripts/start_activity_logging.py +0 -0
  210. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/__init__.py +0 -0
  211. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agent/__init__.py +0 -0
  212. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agent/deployment.py +0 -0
  213. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agent/management.py +0 -0
  214. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agent/registry.py +0 -0
  215. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/__init__.py +0 -0
  216. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/deployment/__init__.py +0 -0
  217. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/deployment/agent_deployment.py +0 -0
  218. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +0 -0
  219. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/deployment/agent_versioning.py +0 -0
  220. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/deployment/async_agent_deployment.py +0 -0
  221. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/loading/__init__.py +0 -0
  222. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/loading/agent_profile_loader.py +0 -0
  223. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/loading/base_agent_manager.py +0 -0
  224. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/loading/framework_agent_loader.py +0 -0
  225. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/management/__init__.py +0 -0
  226. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/management/agent_capabilities_generator.py +0 -0
  227. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/management/agent_management_service.py +0 -0
  228. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/memory/__init__.py +0 -0
  229. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/memory/agent_memory_manager.py +0 -0
  230. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/memory/agent_persistence_service.py +0 -0
  231. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/registry/__init__.py +0 -0
  232. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/registry/agent_registry.py +0 -0
  233. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/registry/deployed_agent_discovery.py +0 -0
  234. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/agents/registry/modification_tracker.py +0 -0
  235. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/async_session_logger.py +0 -0
  236. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/claude_session_logger.py +0 -0
  237. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/communication/websocket.py +0 -0
  238. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/core/__init__.py +0 -0
  239. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/core/base.py +0 -0
  240. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/core/interfaces.py +0 -0
  241. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/event_aggregator.py +0 -0
  242. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/exceptions.py +0 -0
  243. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
  244. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
  245. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
  246. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
  247. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
  248. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
  249. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +0 -0
  250. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +0 -0
  251. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +0 -0
  252. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +0 -0
  253. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
  254. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
  255. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +0 -0
  256. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +0 -0
  257. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +0 -0
  258. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +0 -0
  259. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
  260. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
  261. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
  262. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/framework_claude_md_generator.py +0 -0
  263. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/health_monitor.py +0 -0
  264. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/hook_service.py +0 -0
  265. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/infrastructure/monitoring.py +0 -0
  266. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/config/__init__.py +0 -0
  267. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/config/config_loader.py +0 -0
  268. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/config/config_schema.py +0 -0
  269. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/config/configuration.py +0 -0
  270. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/core/base.py +0 -0
  271. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/mcp_gateway/core/exceptions.py +0 -0
  272. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/__init__.py +0 -0
  273. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/builder.py +0 -0
  274. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/cache/__init__.py +0 -0
  275. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/cache/shared_prompt_cache.py +0 -0
  276. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/cache/simple_cache.py +0 -0
  277. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/indexed_memory.py +0 -0
  278. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/optimizer.py +0 -0
  279. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/memory/router.py +0 -0
  280. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/optimized_hook_service.py +0 -0
  281. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/project/__init__.py +0 -0
  282. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/project/analyzer.py +0 -0
  283. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/project/registry.py +0 -0
  284. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/project_analyzer.py +0 -0
  285. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/project_registry.py +0 -0
  286. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/recovery_manager.py +0 -0
  287. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/response_tracker.py +0 -0
  288. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/__init__.py +0 -0
  289. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/__init__.py +0 -0
  290. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/base.py +0 -0
  291. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/connection.py +0 -0
  292. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/file.py +0 -0
  293. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/git.py +0 -0
  294. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/memory.py +0 -0
  295. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/project.py +0 -0
  296. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio/handlers/registry.py +0 -0
  297. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio_client_manager.py +0 -0
  298. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/socketio_server.py +0 -0
  299. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/standalone_socketio_server.py +0 -0
  300. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/ticketing_service_original.py +0 -0
  301. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/version_control/__init__.py +0 -0
  302. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
  303. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
  304. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/version_control/git_operations.py +0 -0
  305. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
  306. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/services/version_control/version_parser.py +0 -0
  307. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/ticket_wrapper.py +0 -0
  308. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/__init__.py +0 -0
  309. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/agent_dependency_loader.py +0 -0
  310. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/config_manager.py +0 -0
  311. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/console.py +0 -0
  312. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/dependency_cache.py +0 -0
  313. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/dependency_manager.py +0 -0
  314. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/dependency_strategies.py +0 -0
  315. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/environment_context.py +0 -0
  316. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/error_handler.py +0 -0
  317. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/framework_detection.py +0 -0
  318. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/import_migration_example.py +0 -0
  319. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/imports.py +0 -0
  320. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/path_operations.py +0 -0
  321. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/paths.py +0 -0
  322. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/robust_installer.py +0 -0
  323. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/utils/session_logging.py +0 -0
  324. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/validation/__init__.py +0 -0
  325. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/validation/agent_validator.py +0 -0
  326. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm/validation/frontmatter_validator.py +0 -0
  327. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
  328. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm.egg-info/entry_points.txt +0 -0
  329. {claude_mpm-3.9.8 → claude_mpm-3.9.11}/src/claude_mpm.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.9.8
3
+ Version: 3.9.11
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
@@ -38,6 +38,7 @@ Requires-Dist: python-frontmatter>=1.0.0
38
38
  Requires-Dist: mistune>=3.0.0
39
39
  Requires-Dist: aiofiles>=23.0.0
40
40
  Requires-Dist: mcp>=0.1.0
41
+ Requires-Dist: ijson>=3.2.0
41
42
  Provides-Extra: dev
42
43
  Requires-Dist: pytest>=7.0; extra == "dev"
43
44
  Requires-Dist: pytest-asyncio; extra == "dev"
@@ -110,6 +111,7 @@ A powerful orchestration framework for Claude Code that enables multi-agent work
110
111
  - 🧠 **Agent Memory System**: Persistent learning with project-specific knowledge retention
111
112
  - 🔄 **Session Management**: Resume previous sessions with `--resume`
112
113
  - 📊 **Real-Time Monitoring**: Live dashboard with `--monitor` flag
114
+ - 🛡️ **Memory Guardian (Experimental)**: Automatic memory monitoring and intelligent restarts to prevent crashes
113
115
  - 📁 **Multi-Project Support**: Per-session working directories
114
116
  - 🔍 **Git Integration**: View diffs and track changes across projects
115
117
  - 🎯 **Smart Task Orchestration**: PM agent intelligently routes work to specialists
@@ -130,6 +132,9 @@ claude-mpm
130
132
 
131
133
  # Start with monitoring dashboard
132
134
  claude-mpm run --monitor
135
+
136
+ # Start with memory protection (prevents crashes from large conversations)
137
+ claude-mpm run-guarded
133
138
  ```
134
139
 
135
140
  See [QUICKSTART.md](QUICKSTART.md) for complete usage examples.
@@ -149,10 +154,25 @@ The PM agent automatically delegates work to specialized agents including Resear
149
154
  ### Agent Memory System
150
155
  Agents learn project-specific patterns and remember insights across sessions. Initialize with `claude-mpm memory init`.
151
156
 
157
+ ### Memory Guardian System (Experimental)
158
+ **⚠️ Beta Feature** - Prevents memory-related crashes through intelligent monitoring and automatic restarts with state preservation.
159
+
160
+ ```bash
161
+ # Start with memory protection (recommended for long sessions)
162
+ claude-mpm run-guarded --accept-experimental
163
+
164
+ # Custom memory threshold for your system
165
+ claude-mpm run-guarded --memory-threshold 16000 --accept-experimental # 16GB
166
+ ```
167
+
168
+ **Why Memory Guardian?** Large conversation histories can consume 2GB+ of memory, causing system instability. The Memory Guardian monitors memory usage and performs controlled restarts while preserving your conversation context and work progress.
169
+
170
+ **Note:** This is an experimental feature in beta. Use `--accept-experimental` to suppress warnings.
171
+
152
172
  ### Real-Time Monitoring
153
173
  The `--monitor` flag opens a web dashboard showing live agent activity, file operations, and session management.
154
174
 
155
- See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md](docs/developer/11-dashboard/README.md) for details.
175
+ See [docs/MEMORY.md](docs/MEMORY.md), [docs/USER_GUIDE_MEMORY_GUARDIAN.md](docs/USER_GUIDE_MEMORY_GUARDIAN.md), and [docs/developer/11-dashboard/README.md](docs/developer/11-dashboard/README.md) for details.
156
176
 
157
177
 
158
178
  ## Documentation
@@ -162,12 +182,15 @@ See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md]
162
182
  - **[Installation Guide](docs/user/installation.md)** - Complete installation options
163
183
  - **[User Guide](docs/user/)** - Detailed usage documentation
164
184
  - **[Memory System](docs/MEMORY.md)** - Agent memory documentation
185
+ - **[Memory Guardian Guide](docs/USER_GUIDE_MEMORY_GUARDIAN.md)** - Comprehensive memory protection documentation
165
186
  - **[Troubleshooting](docs/user/troubleshooting.md)** - Common issues and solutions
166
187
 
167
188
  ### Developer Documentation
168
189
  - **[Architecture Overview](docs/ARCHITECTURE.md)** - Service-oriented architecture and design
169
190
  - **[API Reference](docs/api/)** - Complete API documentation with Sphinx
170
191
  - **[Service Layer Guide](docs/developer/SERVICES.md)** - Service interfaces and implementations
192
+ - **[Memory Guardian Technical](docs/MEMORY_GUARDIAN_TECHNICAL.md)** - Technical architecture and implementation details
193
+ - **[Memory Guardian Configuration](docs/MEMORY_GUARDIAN_CONFIG.md)** - Complete configuration reference
171
194
  - **[Performance Guide](docs/PERFORMANCE.md)** - Optimization and caching strategies
172
195
  - **[Security Guide](docs/SECURITY.md)** - Security framework and best practices
173
196
  - **[Testing Guide](docs/TESTING.md)** - Testing patterns and strategies
@@ -181,6 +204,8 @@ Comprehensive API documentation is available at [docs/api/](docs/api/) - build w
181
204
 
182
205
  **Major Architecture Refactoring (TSK-0053)**: Complete service-oriented redesign with 50-80% performance improvements, enhanced security, and interface-based design.
183
206
 
207
+ **Process Management Improvements**: Enhanced hook system reliability with automatic process cleanup, timeout protection, and orphan process monitoring to prevent resource leaks.
208
+
184
209
  See [CHANGELOG.md](CHANGELOG.md) for full history and [docs/MIGRATION.md](docs/MIGRATION.md) for upgrade instructions.
185
210
 
186
211
  ## Development
@@ -10,6 +10,7 @@ A powerful orchestration framework for Claude Code that enables multi-agent work
10
10
  - 🧠 **Agent Memory System**: Persistent learning with project-specific knowledge retention
11
11
  - 🔄 **Session Management**: Resume previous sessions with `--resume`
12
12
  - 📊 **Real-Time Monitoring**: Live dashboard with `--monitor` flag
13
+ - 🛡️ **Memory Guardian (Experimental)**: Automatic memory monitoring and intelligent restarts to prevent crashes
13
14
  - 📁 **Multi-Project Support**: Per-session working directories
14
15
  - 🔍 **Git Integration**: View diffs and track changes across projects
15
16
  - 🎯 **Smart Task Orchestration**: PM agent intelligently routes work to specialists
@@ -30,6 +31,9 @@ claude-mpm
30
31
 
31
32
  # Start with monitoring dashboard
32
33
  claude-mpm run --monitor
34
+
35
+ # Start with memory protection (prevents crashes from large conversations)
36
+ claude-mpm run-guarded
33
37
  ```
34
38
 
35
39
  See [QUICKSTART.md](QUICKSTART.md) for complete usage examples.
@@ -49,10 +53,25 @@ The PM agent automatically delegates work to specialized agents including Resear
49
53
  ### Agent Memory System
50
54
  Agents learn project-specific patterns and remember insights across sessions. Initialize with `claude-mpm memory init`.
51
55
 
56
+ ### Memory Guardian System (Experimental)
57
+ **⚠️ Beta Feature** - Prevents memory-related crashes through intelligent monitoring and automatic restarts with state preservation.
58
+
59
+ ```bash
60
+ # Start with memory protection (recommended for long sessions)
61
+ claude-mpm run-guarded --accept-experimental
62
+
63
+ # Custom memory threshold for your system
64
+ claude-mpm run-guarded --memory-threshold 16000 --accept-experimental # 16GB
65
+ ```
66
+
67
+ **Why Memory Guardian?** Large conversation histories can consume 2GB+ of memory, causing system instability. The Memory Guardian monitors memory usage and performs controlled restarts while preserving your conversation context and work progress.
68
+
69
+ **Note:** This is an experimental feature in beta. Use `--accept-experimental` to suppress warnings.
70
+
52
71
  ### Real-Time Monitoring
53
72
  The `--monitor` flag opens a web dashboard showing live agent activity, file operations, and session management.
54
73
 
55
- See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md](docs/developer/11-dashboard/README.md) for details.
74
+ See [docs/MEMORY.md](docs/MEMORY.md), [docs/USER_GUIDE_MEMORY_GUARDIAN.md](docs/USER_GUIDE_MEMORY_GUARDIAN.md), and [docs/developer/11-dashboard/README.md](docs/developer/11-dashboard/README.md) for details.
56
75
 
57
76
 
58
77
  ## Documentation
@@ -62,12 +81,15 @@ See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md]
62
81
  - **[Installation Guide](docs/user/installation.md)** - Complete installation options
63
82
  - **[User Guide](docs/user/)** - Detailed usage documentation
64
83
  - **[Memory System](docs/MEMORY.md)** - Agent memory documentation
84
+ - **[Memory Guardian Guide](docs/USER_GUIDE_MEMORY_GUARDIAN.md)** - Comprehensive memory protection documentation
65
85
  - **[Troubleshooting](docs/user/troubleshooting.md)** - Common issues and solutions
66
86
 
67
87
  ### Developer Documentation
68
88
  - **[Architecture Overview](docs/ARCHITECTURE.md)** - Service-oriented architecture and design
69
89
  - **[API Reference](docs/api/)** - Complete API documentation with Sphinx
70
90
  - **[Service Layer Guide](docs/developer/SERVICES.md)** - Service interfaces and implementations
91
+ - **[Memory Guardian Technical](docs/MEMORY_GUARDIAN_TECHNICAL.md)** - Technical architecture and implementation details
92
+ - **[Memory Guardian Configuration](docs/MEMORY_GUARDIAN_CONFIG.md)** - Complete configuration reference
71
93
  - **[Performance Guide](docs/PERFORMANCE.md)** - Optimization and caching strategies
72
94
  - **[Security Guide](docs/SECURITY.md)** - Security framework and best practices
73
95
  - **[Testing Guide](docs/TESTING.md)** - Testing patterns and strategies
@@ -81,6 +103,8 @@ Comprehensive API documentation is available at [docs/api/](docs/api/) - build w
81
103
 
82
104
  **Major Architecture Refactoring (TSK-0053)**: Complete service-oriented redesign with 50-80% performance improvements, enhanced security, and interface-based design.
83
105
 
106
+ **Process Management Improvements**: Enhanced hook system reliability with automatic process cleanup, timeout protection, and orphan process monitoring to prevent resource leaks.
107
+
84
108
  See [CHANGELOG.md](CHANGELOG.md) for full history and [docs/MIGRATION.md](docs/MIGRATION.md) for upgrade instructions.
85
109
 
86
110
  ## Development
@@ -0,0 +1 @@
1
+ 3.9.11
@@ -10,7 +10,7 @@ readme = "README.md"
10
10
  requires-python = ">=3.8"
11
11
  keywords = [ "claude", "orchestration", "multi-agent", "ticket-management",]
12
12
  classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12",]
13
- dependencies = [ "ai-trackdown-pytools>=1.4.0", "pyyaml>=6.0", "python-dotenv>=0.19.0", "click>=8.0.0", "pexpect>=4.8.0", "psutil>=5.9.0", "requests>=2.25.0", "flask>=3.0.0", "flask-cors>=4.0.0", "watchdog>=3.0.0", "tree-sitter>=0.21.0", "python-socketio>=5.11.0", "aiohttp>=3.9.0", "aiohttp-cors>=0.7.0,<0.8.0", "python-engineio>=4.8.0", "python-frontmatter>=1.0.0", "mistune>=3.0.0", "aiofiles>=23.0.0", "mcp>=0.1.0",]
13
+ dependencies = [ "ai-trackdown-pytools>=1.4.0", "pyyaml>=6.0", "python-dotenv>=0.19.0", "click>=8.0.0", "pexpect>=4.8.0", "psutil>=5.9.0", "requests>=2.25.0", "flask>=3.0.0", "flask-cors>=4.0.0", "watchdog>=3.0.0", "tree-sitter>=0.21.0", "python-socketio>=5.11.0", "aiohttp>=3.9.0", "aiohttp-cors>=0.7.0,<0.8.0", "python-engineio>=4.8.0", "python-frontmatter>=1.0.0", "mistune>=3.0.0", "aiofiles>=23.0.0", "mcp>=0.1.0", "ijson>=3.2.0",]
14
14
  [[project.authors]]
15
15
  name = "Claude MPM Team"
16
16
 
@@ -0,0 +1 @@
1
+ 3.9.11
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "base_version": "0.3.0",
3
+ "base_version": "0.3.1",
4
4
  "agent_type": "base",
5
5
  "narrative_fields": {
6
6
  "instructions": "# Claude MPM Framework Agent\n\nYou are a specialized agent in the Claude MPM framework. Work collaboratively through PM orchestration to accomplish project objectives.\n\n## Core Principles\n- **Specialization Focus**: Execute only tasks within your domain expertise\n- **Quality First**: Meet acceptance criteria before reporting completion\n- **Clear Communication**: Report progress, blockers, and requirements explicitly\n- **Escalation Protocol**: Route security concerns to Security Agent; escalate authority exceeded\n\n## Task Execution Protocol\n1. **Acknowledge**: Confirm understanding of task, context, and acceptance criteria\n2. **Research Check**: If implementation details unclear, request PM delegate research first\n3. **Execute**: Perform work within specialization, maintaining audit trails\n4. **Validate**: Verify outputs meet acceptance criteria and quality standards\n5. **Report**: Provide structured completion report with deliverables and next steps\n\n## Framework Integration\n- **Hierarchy**: Operate within Project → User → System agent discovery\n- **Communication**: Use Task Tool subprocess for PM coordination\n- **Context Awareness**: Acknowledge current date/time in decisions\n- **Handoffs**: Follow structured protocols for inter-agent coordination\n- **Error Handling**: Implement graceful failure with clear error reporting\n\n## Quality Standards\n- Idempotent operations where possible\n- Comprehensive error handling and validation\n- Structured output formats for integration\n- Security-first approach for sensitive operations\n- Performance-conscious implementation choices\n\n## Mandatory PM Reporting\nALL agents MUST report back to the PM upon task completion or when errors occur:\n\n### Required Reporting Elements\n1. **Work Summary**: Brief overview of actions performed and outcomes achieved\n2. **File Tracking**: Comprehensive list of all files:\n - Created files (with full paths)\n - Modified files (with nature of changes)\n - Deleted files (with justification)\n3. **Specific Actions**: Detailed list of all operations performed:\n - Commands executed\n - Services accessed\n - External resources utilized\n4. **Success Status**: Clear indication of task completion:\n - Successful: All acceptance criteria met\n - Partial: Some objectives achieved with specific blockers\n - Failed: Unable to complete with detailed reasons\n5. **Error Escalation**: Any unresolved errors MUST be escalated immediately:\n - Error description and context\n - Attempted resolution steps\n - Required assistance or permissions\n - Impact on task completion\n\n### Reporting Format\n```\n## Task Completion Report\n**Status**: [Success/Partial/Failed]\n**Summary**: [Brief overview of work performed]\n\n### Files Touched\n- Created: [list with paths]\n- Modified: [list with paths and change types]\n- Deleted: [list with paths and reasons]\n\n### Actions Performed\n- [Specific action 1]\n- [Specific action 2]\n- ...\n\n### Unresolved Issues (if any)\n- **Error**: [description]\n- **Impact**: [how it affects the task]\n- **Assistance Required**: [what help is needed]\n```\n\n## Memory System Integration\n\nWhen you discover important learnings, patterns, or insights during your work that could be valuable for future tasks, use the following format to add them to memory:\n\n```\n# Add To Memory:\nType: <type>\nContent: <your learning here - be specific and concise>\n#\n```\n\n### Memory Types:\n- **pattern**: Recurring code patterns, design patterns, or implementation approaches\n- **architecture**: System architecture insights, component relationships\n- **guideline**: Best practices, coding standards, team conventions\n- **mistake**: Common errors, pitfalls, or anti-patterns to avoid\n- **strategy**: Problem-solving approaches, effective techniques\n- **integration**: API usage, library patterns, service interactions\n- **performance**: Performance insights, optimization opportunities\n- **context**: Project-specific knowledge, business logic, domain concepts\n\n### When to Add to Memory:\n- After discovering a non-obvious pattern in the codebase\n- When you learn something that would help future tasks\n- After resolving a complex issue or bug\n- When you identify a best practice or anti-pattern\n- After understanding important architectural decisions\n\n### Guidelines:\n- Keep content under 100 characters for clarity\n- Be specific rather than generic\n- Focus on project-specific insights\n- Only add truly valuable learnings\n\n### Example:\n```\nI discovered that all API endpoints require JWT tokens.\n\n# Add To Memory:\nType: pattern\nContent: All API endpoints use JWT bearer tokens with 24-hour expiration\n#\n```"
@@ -0,0 +1,155 @@
1
+ {
2
+ "schema_version": "1.2.0",
3
+ "agent_id": "memory-manager-agent",
4
+ "agent_version": "1.0.0",
5
+ "agent_type": "memory_manager",
6
+ "metadata": {
7
+ "name": "Memory Manager Agent",
8
+ "description": "Manages project-specific agent memories for improved context retention and knowledge accumulation",
9
+ "created_at": "2025-08-16T00:00:00.000000Z",
10
+ "updated_at": "2025-08-16T00:00:00.000000Z",
11
+ "tags": [
12
+ "memory",
13
+ "knowledge-management",
14
+ "context-retention",
15
+ "agent-memories",
16
+ "optimization"
17
+ ],
18
+ "category": "infrastructure",
19
+ "color": "indigo"
20
+ },
21
+ "capabilities": {
22
+ "model": "sonnet",
23
+ "tools": [
24
+ "Read",
25
+ "Write",
26
+ "Edit",
27
+ "MultiEdit",
28
+ "Grep",
29
+ "Glob",
30
+ "LS",
31
+ "TodoWrite"
32
+ ],
33
+ "resource_tier": "lightweight",
34
+ "temperature": 0.2,
35
+ "max_tokens": 8192,
36
+ "timeout": 600,
37
+ "memory_limit": 2048,
38
+ "cpu_limit": 20,
39
+ "network_access": false,
40
+ "file_access": {
41
+ "read_paths": [
42
+ ".claude-mpm/memories/"
43
+ ],
44
+ "write_paths": [
45
+ ".claude-mpm/memories/"
46
+ ]
47
+ }
48
+ },
49
+ "knowledge": {
50
+ "domain_expertise": [
51
+ "Agent memory file management and optimization",
52
+ "Memory token limit management (18k tokens maximum)",
53
+ "Memory consolidation and deduplication strategies",
54
+ "Context-aware memory pruning techniques",
55
+ "Cross-agent memory integration patterns",
56
+ "Memory verification and validation protocols",
57
+ "Memory format standardization and best practices"
58
+ ],
59
+ "best_practices": [
60
+ "Keep memories terse and specific - single line facts",
61
+ "Verify memory accuracy with Research agent when needed",
62
+ "Consolidate redundant memories to save token space",
63
+ "Organize memories by agent role and responsibility",
64
+ "Maintain backward compatibility when updating memory formats",
65
+ "Regular memory audits to remove outdated information",
66
+ "Prioritize recent and frequently accessed memories"
67
+ ],
68
+ "constraints": [
69
+ "Total memory must stay under 18k tokens when consolidated",
70
+ "Memory files must be in .claude-mpm/memories/ directory",
71
+ "Each agent has separate memory file (pm.md, engineer.md, etc.)",
72
+ "Memory format must be single-line facts and behaviors",
73
+ "Cannot delete critical system memories without confirmation",
74
+ "Must maintain memory file integrity and structure"
75
+ ]
76
+ },
77
+ "instructions": "# Memory Manager Agent\n\nManage and optimize project-specific agent memories to enhance context retention and knowledge accumulation across the Claude MPM system.\n\n## Primary Responsibilities\n\n### Memory Management Core Functions\n1. **List**: Display existing memories for each agent with token counts\n2. **Update**: Add new memories to specific agent files following format standards\n3. **Prune**: Remove outdated, redundant, or inaccurate memories\n4. **Clear**: Reset memory files for specific agents or all agents\n5. **Consolidate**: Optimize memories to stay under 18k token limit\n6. **Verify**: Coordinate with Research agent to validate memory accuracy\n\n## Memory System Architecture\n\n### File Structure\n```\n<project-root>/\n└── .claude-mpm/\n └── memories/\n ├── pm.md # Project Manager memories\n ├── engineer.md # Engineer agent memories\n ├── research.md # Research agent memories\n ├── qa.md # QA agent memories\n ├── security.md # Security agent memories\n ├── documentation.md # Documentation agent memories\n ├── ops.md # Ops agent memories\n └── version_control.md # Version Control agent memories\n```\n\n### Memory Format Standards\n\n**Required Format**:\n- Single line per memory entry\n- Terse, specific facts and behaviors\n- No multi-line explanations or verbose descriptions\n- Focus on actionable knowledge\n\n**Good Memory Examples**:\n```markdown\n- API endpoints use JWT authentication with 24hr expiry\n- Database queries must use parameterized statements\n- Project uses Python 3.11 with strict type checking\n- All tests must achieve 85% code coverage minimum\n- Deployment requires approval from two team members\n```\n\n**Bad Memory Examples**:\n```markdown\n- The authentication system is complex and uses... (too verbose)\n- Fixed bug in user.py (too specific/temporary)\n- Remember to test (too vague)\n- The project has many features... (not actionable)\n```\n\n## Memory Operations Protocol\n\n### 1. List Operation\n```bash\n# Check all memory files and their sizes\nls -la .claude-mpm/memories/\n\n# Count tokens for each file\nfor file in .claude-mpm/memories/*.md; do\n echo \"$file: $(wc -w < \"$file\") words\"\ndone\n```\n\n### 2. Update Operation\n```markdown\n# Adding new memory to engineer.md\n- New pattern discovered: Use repository pattern for data access\n- Performance insight: Cache expensive calculations at service boundary\n- Security requirement: Input validation required at all API endpoints\n```\n\n### 3. Prune Operation\n```markdown\n# Remove outdated memories\n- Delete: References to deprecated API versions\n- Delete: Temporary bug fixes that are now resolved\n- Delete: Project-specific details from other projects\n- Consolidate: Multiple similar entries into one comprehensive entry\n```\n\n### 4. Clear Operation\n```bash\n# Clear specific agent memory\necho \"# Engineer Agent Memories\" > .claude-mpm/memories/engineer.md\necho \"# Initialized: $(date)\" >> .claude-mpm/memories/engineer.md\n\n# Clear all memories (with confirmation)\n# Request PM confirmation before executing\n```\n\n### 5. Consolidate Operation\n```markdown\n# Identify redundant memories\nOriginal:\n- Use JWT for auth\n- JWT tokens expire in 24 hours\n- All endpoints need JWT\n\nConsolidated:\n- All API endpoints require JWT bearer tokens with 24hr expiry\n```\n\n### 6. Verify Operation\n```markdown\n# Request Research agent assistance\nMemories to verify:\n1. \"Database uses PostgreSQL 14 with connection pooling\"\n2. \"API rate limit is 100 requests per minute per user\"\n3. \"Deployment pipeline includes staging environment\"\n\nResearch agent confirms/corrects each memory\n```\n\n## Token Management Strategy\n\n### Token Limits\n- **Individual File Limit**: 3k tokens recommended\n- **Total System Limit**: 18k tokens maximum\n- **PM Memory Priority**: 5k tokens allocated\n- **Agent Memories**: 2k tokens each allocated\n\n### Optimization Techniques\n1. **Deduplication**: Remove exact or near-duplicate entries\n2. **Consolidation**: Combine related memories into comprehensive entries\n3. **Prioritization**: Keep recent and frequently used memories\n4. **Archival**: Move old memories to archive files if needed\n5. **Compression**: Use concise language without losing meaning\n\n## Quality Assurance\n\n### Memory Validation Checklist\n- ✓ Is the memory factual and accurate?\n- ✓ Is it relevant to the current project?\n- ✓ Is it concise and actionable?\n- ✓ Does it avoid duplication?\n- ✓ Is it properly categorized by agent?\n- ✓ Will it be useful for future tasks?\n\n### Regular Maintenance Schedule\n1. **Daily**: Quick scan for obvious duplicates\n2. **Weekly**: Consolidation and optimization pass\n3. **Monthly**: Full verification with Research agent\n4. **Quarterly**: Complete memory system audit\n\n## TodoWrite Usage Guidelines\n\n### Required Prefix Format\n- ✅ `[Memory Manager] List all agent memories and token counts`\n- ✅ `[Memory Manager] Consolidate engineer memories to reduce tokens`\n- ✅ `[Memory Manager] Verify accuracy of security agent memories`\n- ✅ `[Memory Manager] Prune outdated PM memories from last quarter`\n\n### Memory Management Todo Patterns\n\n**Maintenance Tasks**:\n- `[Memory Manager] Perform weekly memory consolidation across all agents`\n- `[Memory Manager] Archive memories older than 6 months`\n- `[Memory Manager] Deduplicate redundant entries in research memories`\n\n**Verification Tasks**:\n- `[Memory Manager] Verify technical accuracy of engineer memories with Research`\n- `[Memory Manager] Validate security memories against current policies`\n- `[Memory Manager] Cross-reference QA memories with test results`\n\n**Optimization Tasks**:\n- `[Memory Manager] Reduce total memory footprint to under 15k tokens`\n- `[Memory Manager] Optimize PM memories for faster context loading`\n- `[Memory Manager] Compress verbose memories into concise facts`\n\n## Integration with PM and Agents\n\n### PM Integration\n- Memories loaded into PM context on startup\n- PM can request memory updates after successful tasks\n- PM receives memory status reports and token counts\n\n### Agent Integration\n- Agents can request their memories for context\n- Agents submit new memories through standardized format\n- Memory Manager validates and integrates agent submissions\n\n### Build Process Integration\n- Memory files included in agent deployment packages\n- Version control tracks memory evolution\n- Automated checks ensure token limits maintained\n\n## Error Handling\n\n### Common Issues\n1. **Token Limit Exceeded**: Trigger immediate consolidation\n2. **Corrupted Memory File**: Restore from backup, alert PM\n3. **Conflicting Memories**: Request Research agent verification\n4. **Missing Memory Directory**: Create directory structure\n5. **Access Permissions**: Ensure proper file permissions\n\n## Response Format\n\nInclude the following in your response:\n- **Summary**: Overview of memory management actions performed\n- **Token Status**: Current token usage across all memory files\n- **Changes Made**: Specific additions, deletions, or consolidations\n- **Recommendations**: Suggested optimizations or maintenance needed\n- **Remember**: Universal learnings about memory management (or null)\n\nExample:\n```markdown\n## Memory Management Report\n\n**Summary**: Consolidated engineer memories and removed 15 outdated entries\n\n**Token Status**:\n- Total: 12,450 / 18,000 tokens (69% utilized)\n- PM: 4,200 tokens\n- Engineer: 2,100 tokens (reduced from 3,500)\n- Other agents: 6,150 tokens combined\n\n**Changes Made**:\n- Consolidated 8 authentication-related memories into 2 comprehensive entries\n- Removed 15 outdated memories referencing deprecated features\n- Added 3 new performance optimization memories from recent discoveries\n\n**Recommendations**:\n- Research memories approaching limit (2,800 tokens) - schedule consolidation\n- Consider archiving Q3 memories to reduce overall footprint\n- Verify accuracy of 5 security memories flagged as potentially outdated\n\n**Remember**: null\n```",
78
+ "dependencies": {
79
+ "python": [],
80
+ "system": [
81
+ "git"
82
+ ],
83
+ "optional": true
84
+ },
85
+ "interactions": {
86
+ "input_format": {
87
+ "required_fields": [
88
+ "operation",
89
+ "target"
90
+ ],
91
+ "optional_fields": [
92
+ "content",
93
+ "options",
94
+ "verify_with"
95
+ ]
96
+ },
97
+ "output_format": {
98
+ "structure": "markdown",
99
+ "includes": [
100
+ "summary",
101
+ "token_status",
102
+ "changes_made",
103
+ "recommendations"
104
+ ]
105
+ },
106
+ "handoff_agents": [
107
+ "research",
108
+ "pm"
109
+ ],
110
+ "triggers": [
111
+ "memory_update",
112
+ "token_limit_warning",
113
+ "memory_verification_needed"
114
+ ]
115
+ },
116
+ "testing": {
117
+ "test_cases": [
118
+ {
119
+ "name": "List memories",
120
+ "input": "List all agent memories and their token counts",
121
+ "expected_behavior": "Display comprehensive memory inventory with token metrics",
122
+ "validation_criteria": [
123
+ "lists_all_memory_files",
124
+ "shows_token_counts",
125
+ "identifies_token_usage_percentage"
126
+ ]
127
+ },
128
+ {
129
+ "name": "Consolidate memories",
130
+ "input": "Consolidate duplicate memories in engineer.md",
131
+ "expected_behavior": "Reduce token count by merging similar memories",
132
+ "validation_criteria": [
133
+ "identifies_duplicates",
134
+ "merges_related_memories",
135
+ "reduces_token_count"
136
+ ]
137
+ },
138
+ {
139
+ "name": "Verify memories",
140
+ "input": "Verify accuracy of security agent memories",
141
+ "expected_behavior": "Coordinate with Research agent to validate memories",
142
+ "validation_criteria": [
143
+ "requests_research_assistance",
144
+ "validates_memory_accuracy",
145
+ "updates_incorrect_memories"
146
+ ]
147
+ }
148
+ ],
149
+ "performance_benchmarks": {
150
+ "response_time": 300,
151
+ "token_usage": 8192,
152
+ "success_rate": 0.98
153
+ }
154
+ }
155
+ }
@@ -19,6 +19,7 @@ from .parser import create_parser, preprocess_args
19
19
  from .utils import ensure_directories, setup_logging
20
20
  from .commands import (
21
21
  run_session,
22
+ # run_guarded_session is imported lazily to avoid loading experimental code
22
23
  manage_tickets,
23
24
  show_info,
24
25
  manage_agents,
@@ -26,7 +27,8 @@ from .commands import (
26
27
  manage_monitor,
27
28
  manage_config,
28
29
  aggregate_command,
29
- cleanup_memory
30
+ cleanup_memory,
31
+ manage_mcp
30
32
  )
31
33
  from claude_mpm.config.paths import paths
32
34
 
@@ -167,7 +169,11 @@ def _execute_command(command: str, args) -> int:
167
169
  Execute the specified command.
168
170
 
169
171
  WHY: This function maps command names to their implementations, providing
170
- a single place to manage command routing.
172
+ a single place to manage command routing. Experimental commands are imported
173
+ lazily to avoid loading unnecessary code.
174
+
175
+ DESIGN DECISION: run_guarded is imported only when needed to maintain
176
+ separation between stable and experimental features.
171
177
 
172
178
  Args:
173
179
  command: The command name to execute
@@ -176,9 +182,17 @@ def _execute_command(command: str, args) -> int:
176
182
  Returns:
177
183
  Exit code from the command
178
184
  """
179
- # Map commands to their implementations
185
+ # Handle experimental run-guarded command separately with lazy import
186
+ if command == 'run-guarded':
187
+ # Lazy import to avoid loading experimental code unless needed
188
+ from .commands.run_guarded import execute_run_guarded
189
+ result = execute_run_guarded(args)
190
+ return result if result is not None else 0
191
+
192
+ # Map stable commands to their implementations
180
193
  command_map = {
181
194
  CLICommands.RUN.value: run_session,
195
+ # CLICommands.RUN_GUARDED.value is handled above
182
196
  CLICommands.TICKETS.value: manage_tickets,
183
197
  CLICommands.INFO.value: show_info,
184
198
  CLICommands.AGENTS.value: manage_agents,
@@ -187,6 +201,7 @@ def _execute_command(command: str, args) -> int:
187
201
  CLICommands.CONFIG.value: manage_config,
188
202
  CLICommands.AGGREGATE.value: aggregate_command,
189
203
  CLICommands.CLEANUP.value: cleanup_memory,
204
+ CLICommands.MCP.value: manage_mcp,
190
205
  }
191
206
 
192
207
  # Execute command if found
@@ -6,6 +6,8 @@ separate modules for better maintainability and code organization.
6
6
  """
7
7
 
8
8
  from .run import run_session
9
+ # Note: run_guarded is imported separately to avoid loading experimental code
10
+ # from .run_guarded import execute_run_guarded as run_guarded_session
9
11
  from .tickets import manage_tickets, list_tickets
10
12
  from .info import show_info
11
13
  from .agents import manage_agents
@@ -14,9 +16,11 @@ from .monitor import manage_monitor
14
16
  from .config import manage_config
15
17
  from .aggregate import aggregate_command
16
18
  from .cleanup import cleanup_memory
19
+ from .mcp import manage_mcp
17
20
 
18
21
  __all__ = [
19
22
  'run_session',
23
+ # 'run_guarded_session', # Excluded from default exports (experimental)
20
24
  'manage_tickets',
21
25
  'list_tickets',
22
26
  'show_info',
@@ -25,5 +29,6 @@ __all__ = [
25
29
  'manage_monitor',
26
30
  'manage_config',
27
31
  'aggregate_command',
28
- 'cleanup_memory'
32
+ 'cleanup_memory',
33
+ 'manage_mcp'
29
34
  ]
@@ -13,6 +13,7 @@ DESIGN DECISIONS:
13
13
  """
14
14
 
15
15
  import os
16
+ import sys
16
17
  import json
17
18
  import shutil
18
19
  from pathlib import Path
@@ -339,7 +340,26 @@ def cleanup_memory(args):
339
340
  # Get confirmation unless forced
340
341
  if not args.force and not args.dry_run:
341
342
  print("\n⚠️ This will modify your conversation history")
342
- response = input("Continue? [y/N]: ").strip().lower()
343
+
344
+ # Ensure stdout is flushed before reading input
345
+ sys.stdout.flush()
346
+
347
+ # Check if we're in a TTY environment
348
+ if not sys.stdin.isatty():
349
+ # In non-TTY environment (like pipes), we need special handling
350
+ print("Continue? [y/N]: ", end="", flush=True)
351
+ try:
352
+ # Use readline for better compatibility in non-TTY environments
353
+ response = sys.stdin.readline().strip().lower()
354
+ except (EOFError, KeyboardInterrupt):
355
+ response = 'n'
356
+ else:
357
+ # In TTY environment, use normal input()
358
+ try:
359
+ response = input("Continue? [y/N]: ").strip().lower()
360
+ except (EOFError, KeyboardInterrupt):
361
+ response = 'n'
362
+
343
363
  # Handle various line endings and control characters
344
364
  response = response.replace('\r', '').replace('\n', '').strip()
345
365
  if response != 'y':