claude-mpm 3.9.9__py3-none-any.whl → 4.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +2 -2
  3. claude_mpm/__main__.py +3 -2
  4. claude_mpm/agents/__init__.py +85 -79
  5. claude_mpm/agents/agent_loader.py +464 -1003
  6. claude_mpm/agents/agent_loader_integration.py +45 -45
  7. claude_mpm/agents/agents_metadata.py +29 -30
  8. claude_mpm/agents/async_agent_loader.py +156 -138
  9. claude_mpm/agents/base_agent.json +1 -1
  10. claude_mpm/agents/base_agent_loader.py +179 -151
  11. claude_mpm/agents/frontmatter_validator.py +229 -130
  12. claude_mpm/agents/schema/agent_schema.json +1 -1
  13. claude_mpm/agents/system_agent_config.py +213 -147
  14. claude_mpm/agents/templates/__init__.py +13 -13
  15. claude_mpm/agents/templates/code_analyzer.json +2 -2
  16. claude_mpm/agents/templates/data_engineer.json +1 -1
  17. claude_mpm/agents/templates/documentation.json +23 -11
  18. claude_mpm/agents/templates/engineer.json +22 -6
  19. claude_mpm/agents/templates/memory_manager.json +155 -0
  20. claude_mpm/agents/templates/ops.json +2 -2
  21. claude_mpm/agents/templates/project_organizer.json +1 -1
  22. claude_mpm/agents/templates/qa.json +1 -1
  23. claude_mpm/agents/templates/refactoring_engineer.json +222 -0
  24. claude_mpm/agents/templates/research.json +20 -14
  25. claude_mpm/agents/templates/security.json +1 -1
  26. claude_mpm/agents/templates/ticketing.json +1 -1
  27. claude_mpm/agents/templates/version_control.json +1 -1
  28. claude_mpm/agents/templates/web_qa.json +3 -1
  29. claude_mpm/agents/templates/web_ui.json +2 -2
  30. claude_mpm/cli/__init__.py +90 -49
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +21 -18
  33. claude_mpm/cli/commands/agents.py +279 -247
  34. claude_mpm/cli/commands/aggregate.py +138 -157
  35. claude_mpm/cli/commands/cleanup.py +147 -147
  36. claude_mpm/cli/commands/config.py +93 -76
  37. claude_mpm/cli/commands/info.py +17 -16
  38. claude_mpm/cli/commands/mcp.py +143 -762
  39. claude_mpm/cli/commands/mcp_command_router.py +139 -0
  40. claude_mpm/cli/commands/mcp_config_commands.py +20 -0
  41. claude_mpm/cli/commands/mcp_install_commands.py +20 -0
  42. claude_mpm/cli/commands/mcp_server_commands.py +175 -0
  43. claude_mpm/cli/commands/mcp_tool_commands.py +34 -0
  44. claude_mpm/cli/commands/memory.py +239 -203
  45. claude_mpm/cli/commands/monitor.py +203 -81
  46. claude_mpm/cli/commands/run.py +380 -429
  47. claude_mpm/cli/commands/run_config_checker.py +160 -0
  48. claude_mpm/cli/commands/socketio_monitor.py +235 -0
  49. claude_mpm/cli/commands/tickets.py +305 -197
  50. claude_mpm/cli/parser.py +24 -1150
  51. claude_mpm/cli/parsers/__init__.py +29 -0
  52. claude_mpm/cli/parsers/agents_parser.py +136 -0
  53. claude_mpm/cli/parsers/base_parser.py +331 -0
  54. claude_mpm/cli/parsers/config_parser.py +85 -0
  55. claude_mpm/cli/parsers/mcp_parser.py +152 -0
  56. claude_mpm/cli/parsers/memory_parser.py +138 -0
  57. claude_mpm/cli/parsers/monitor_parser.py +104 -0
  58. claude_mpm/cli/parsers/run_parser.py +147 -0
  59. claude_mpm/cli/parsers/tickets_parser.py +203 -0
  60. claude_mpm/cli/ticket_cli.py +7 -3
  61. claude_mpm/cli/utils.py +55 -37
  62. claude_mpm/cli_module/__init__.py +6 -6
  63. claude_mpm/cli_module/args.py +188 -140
  64. claude_mpm/cli_module/commands.py +79 -70
  65. claude_mpm/cli_module/migration_example.py +38 -60
  66. claude_mpm/config/__init__.py +32 -25
  67. claude_mpm/config/agent_config.py +151 -119
  68. claude_mpm/config/experimental_features.py +217 -0
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +36 -18
  72. claude_mpm/core/__init__.py +9 -6
  73. claude_mpm/core/agent_name_normalizer.py +68 -71
  74. claude_mpm/core/agent_registry.py +372 -521
  75. claude_mpm/core/agent_session_manager.py +74 -63
  76. claude_mpm/core/base_service.py +116 -87
  77. claude_mpm/core/cache.py +119 -153
  78. claude_mpm/core/claude_runner.py +425 -1120
  79. claude_mpm/core/config.py +263 -168
  80. claude_mpm/core/config_aliases.py +69 -61
  81. claude_mpm/core/config_constants.py +292 -0
  82. claude_mpm/core/constants.py +57 -99
  83. claude_mpm/core/container.py +211 -178
  84. claude_mpm/core/exceptions.py +233 -89
  85. claude_mpm/core/factories.py +92 -54
  86. claude_mpm/core/framework_loader.py +378 -220
  87. claude_mpm/core/hook_manager.py +198 -83
  88. claude_mpm/core/hook_performance_config.py +136 -0
  89. claude_mpm/core/injectable_service.py +61 -55
  90. claude_mpm/core/interactive_session.py +165 -155
  91. claude_mpm/core/interfaces.py +221 -195
  92. claude_mpm/core/lazy.py +96 -96
  93. claude_mpm/core/logger.py +133 -107
  94. claude_mpm/core/logging_config.py +185 -157
  95. claude_mpm/core/minimal_framework_loader.py +20 -15
  96. claude_mpm/core/mixins.py +30 -29
  97. claude_mpm/core/oneshot_session.py +215 -181
  98. claude_mpm/core/optimized_agent_loader.py +134 -138
  99. claude_mpm/core/optimized_startup.py +159 -157
  100. claude_mpm/core/pm_hook_interceptor.py +85 -72
  101. claude_mpm/core/service_registry.py +103 -101
  102. claude_mpm/core/session_manager.py +97 -87
  103. claude_mpm/core/socketio_pool.py +212 -158
  104. claude_mpm/core/tool_access_control.py +58 -51
  105. claude_mpm/core/types.py +46 -24
  106. claude_mpm/core/typing_utils.py +166 -82
  107. claude_mpm/core/unified_agent_registry.py +721 -0
  108. claude_mpm/core/unified_config.py +550 -0
  109. claude_mpm/core/unified_paths.py +549 -0
  110. claude_mpm/dashboard/index.html +1 -1
  111. claude_mpm/dashboard/open_dashboard.py +51 -17
  112. claude_mpm/dashboard/static/css/dashboard.css +27 -8
  113. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  114. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  115. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  116. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  117. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  118. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  119. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  120. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  121. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  122. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  123. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  124. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  125. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  126. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  127. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  128. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  129. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  130. claude_mpm/dashboard/static/js/components/event-viewer.js +74 -70
  131. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  132. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +106 -92
  133. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  134. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  135. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  136. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  137. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  138. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  139. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  140. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  141. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  142. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  143. claude_mpm/dashboard/static/js/socket-client.js +120 -54
  144. claude_mpm/dashboard/templates/index.html +40 -50
  145. claude_mpm/experimental/cli_enhancements.py +60 -58
  146. claude_mpm/generators/__init__.py +1 -1
  147. claude_mpm/generators/agent_profile_generator.py +75 -65
  148. claude_mpm/hooks/__init__.py +1 -1
  149. claude_mpm/hooks/base_hook.py +33 -28
  150. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  151. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  152. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  153. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  154. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  155. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  156. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  157. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  158. claude_mpm/hooks/memory_integration_hook.py +140 -100
  159. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  160. claude_mpm/hooks/validation_hooks.py +57 -49
  161. claude_mpm/init.py +145 -121
  162. claude_mpm/models/__init__.py +9 -9
  163. claude_mpm/models/agent_definition.py +33 -23
  164. claude_mpm/models/agent_session.py +228 -200
  165. claude_mpm/scripts/__init__.py +1 -1
  166. claude_mpm/scripts/socketio_daemon.py +192 -75
  167. claude_mpm/scripts/socketio_server_manager.py +328 -0
  168. claude_mpm/scripts/start_activity_logging.py +25 -22
  169. claude_mpm/services/__init__.py +68 -43
  170. claude_mpm/services/agent_capabilities_service.py +271 -0
  171. claude_mpm/services/agents/__init__.py +23 -32
  172. claude_mpm/services/agents/deployment/__init__.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  174. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  175. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  176. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  177. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  178. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  179. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  180. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  181. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  182. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  183. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  184. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  185. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  186. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  187. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  188. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  189. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  190. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  191. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  192. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  193. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  194. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  195. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  196. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  197. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  198. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  199. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  200. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  201. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  202. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  203. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  204. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  205. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  206. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  207. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  208. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  209. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  210. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  211. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  212. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  213. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  214. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  215. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  216. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  217. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  218. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  219. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  220. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  221. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  222. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  223. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  224. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  225. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  226. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  227. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  228. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  229. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  230. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  231. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  232. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  233. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  234. claude_mpm/services/agents/loading/__init__.py +2 -2
  235. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  236. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  237. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  238. claude_mpm/services/agents/management/__init__.py +2 -2
  239. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  240. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  241. claude_mpm/services/agents/memory/__init__.py +9 -6
  242. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  243. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  244. claude_mpm/services/agents/memory/analyzer.py +430 -0
  245. claude_mpm/services/agents/memory/content_manager.py +376 -0
  246. claude_mpm/services/agents/memory/template_generator.py +468 -0
  247. claude_mpm/services/agents/registry/__init__.py +7 -10
  248. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  249. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  250. claude_mpm/services/async_session_logger.py +187 -153
  251. claude_mpm/services/claude_session_logger.py +87 -72
  252. claude_mpm/services/command_handler_service.py +217 -0
  253. claude_mpm/services/communication/__init__.py +3 -2
  254. claude_mpm/services/core/__init__.py +50 -97
  255. claude_mpm/services/core/base.py +60 -53
  256. claude_mpm/services/core/interfaces/__init__.py +188 -0
  257. claude_mpm/services/core/interfaces/agent.py +351 -0
  258. claude_mpm/services/core/interfaces/communication.py +343 -0
  259. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  260. claude_mpm/services/core/interfaces/service.py +434 -0
  261. claude_mpm/services/core/interfaces.py +19 -944
  262. claude_mpm/services/event_aggregator.py +208 -170
  263. claude_mpm/services/exceptions.py +387 -308
  264. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  265. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  266. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  267. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  268. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  269. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  270. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  271. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  272. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  273. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  274. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  275. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  276. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  277. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  278. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  279. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  280. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  281. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  282. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  283. claude_mpm/services/hook_service.py +106 -114
  284. claude_mpm/services/infrastructure/__init__.py +7 -5
  285. claude_mpm/services/infrastructure/context_preservation.py +571 -0
  286. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  287. claude_mpm/services/infrastructure/logging.py +83 -76
  288. claude_mpm/services/infrastructure/monitoring.py +547 -404
  289. claude_mpm/services/mcp_gateway/__init__.py +40 -23
  290. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  291. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  292. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  293. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  294. claude_mpm/services/mcp_gateway/core/__init__.py +14 -21
  295. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  296. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  297. claude_mpm/services/mcp_gateway/core/interfaces.py +97 -93
  298. claude_mpm/services/mcp_gateway/main.py +307 -127
  299. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  300. claude_mpm/services/mcp_gateway/registry/service_registry.py +100 -101
  301. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  302. claude_mpm/services/mcp_gateway/server/__init__.py +4 -4
  303. claude_mpm/services/mcp_gateway/server/{mcp_server.py → mcp_gateway.py} +149 -153
  304. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  305. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  306. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  307. claude_mpm/services/mcp_gateway/tools/base_adapter.py +110 -121
  308. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  309. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  310. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  311. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  312. claude_mpm/services/memory/__init__.py +2 -2
  313. claude_mpm/services/memory/builder.py +451 -362
  314. claude_mpm/services/memory/cache/__init__.py +2 -2
  315. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  316. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  317. claude_mpm/services/memory/indexed_memory.py +195 -193
  318. claude_mpm/services/memory/optimizer.py +267 -234
  319. claude_mpm/services/memory/router.py +571 -263
  320. claude_mpm/services/memory_hook_service.py +237 -0
  321. claude_mpm/services/port_manager.py +223 -0
  322. claude_mpm/services/project/__init__.py +3 -3
  323. claude_mpm/services/project/analyzer.py +451 -305
  324. claude_mpm/services/project/registry.py +262 -240
  325. claude_mpm/services/recovery_manager.py +287 -231
  326. claude_mpm/services/response_tracker.py +87 -67
  327. claude_mpm/services/runner_configuration_service.py +587 -0
  328. claude_mpm/services/session_management_service.py +304 -0
  329. claude_mpm/services/socketio/__init__.py +4 -4
  330. claude_mpm/services/socketio/client_proxy.py +174 -0
  331. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  332. claude_mpm/services/socketio/handlers/base.py +44 -30
  333. claude_mpm/services/socketio/handlers/connection.py +145 -65
  334. claude_mpm/services/socketio/handlers/file.py +123 -108
  335. claude_mpm/services/socketio/handlers/git.py +607 -373
  336. claude_mpm/services/socketio/handlers/hook.py +170 -0
  337. claude_mpm/services/socketio/handlers/memory.py +4 -4
  338. claude_mpm/services/socketio/handlers/project.py +4 -4
  339. claude_mpm/services/socketio/handlers/registry.py +53 -38
  340. claude_mpm/services/socketio/server/__init__.py +18 -0
  341. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  342. claude_mpm/services/socketio/server/core.py +399 -0
  343. claude_mpm/services/socketio/server/main.py +323 -0
  344. claude_mpm/services/socketio_client_manager.py +160 -133
  345. claude_mpm/services/socketio_server.py +36 -1885
  346. claude_mpm/services/subprocess_launcher_service.py +316 -0
  347. claude_mpm/services/system_instructions_service.py +258 -0
  348. claude_mpm/services/ticket_manager.py +20 -534
  349. claude_mpm/services/utility_service.py +285 -0
  350. claude_mpm/services/version_control/__init__.py +18 -21
  351. claude_mpm/services/version_control/branch_strategy.py +20 -10
  352. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  353. claude_mpm/services/version_control/git_operations.py +52 -21
  354. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  355. claude_mpm/services/version_control/version_parser.py +145 -125
  356. claude_mpm/services/version_service.py +270 -0
  357. claude_mpm/storage/__init__.py +9 -0
  358. claude_mpm/storage/state_storage.py +552 -0
  359. claude_mpm/ticket_wrapper.py +2 -2
  360. claude_mpm/utils/__init__.py +2 -2
  361. claude_mpm/utils/agent_dependency_loader.py +453 -243
  362. claude_mpm/utils/config_manager.py +157 -118
  363. claude_mpm/utils/console.py +1 -1
  364. claude_mpm/utils/dependency_cache.py +102 -107
  365. claude_mpm/utils/dependency_manager.py +52 -47
  366. claude_mpm/utils/dependency_strategies.py +131 -96
  367. claude_mpm/utils/environment_context.py +110 -102
  368. claude_mpm/utils/error_handler.py +75 -55
  369. claude_mpm/utils/file_utils.py +80 -67
  370. claude_mpm/utils/framework_detection.py +12 -11
  371. claude_mpm/utils/import_migration_example.py +12 -60
  372. claude_mpm/utils/imports.py +48 -45
  373. claude_mpm/utils/path_operations.py +100 -93
  374. claude_mpm/utils/robust_installer.py +172 -164
  375. claude_mpm/utils/session_logging.py +30 -23
  376. claude_mpm/utils/subprocess_utils.py +99 -61
  377. claude_mpm/validation/__init__.py +1 -1
  378. claude_mpm/validation/agent_validator.py +151 -111
  379. claude_mpm/validation/frontmatter_validator.py +92 -71
  380. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/METADATA +51 -2
  381. claude_mpm-4.0.3.dist-info/RECORD +402 -0
  382. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
  383. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/licenses/LICENSE +1 -1
  384. claude_mpm/config/memory_guardian_config.py +0 -325
  385. claude_mpm/core/config_paths.py +0 -150
  386. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  387. claude_mpm/deployment_paths.py +0 -261
  388. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  389. claude_mpm/models/state_models.py +0 -433
  390. claude_mpm/services/agent/__init__.py +0 -24
  391. claude_mpm/services/agent/deployment.py +0 -2548
  392. claude_mpm/services/agent/management.py +0 -598
  393. claude_mpm/services/agent/registry.py +0 -813
  394. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  395. claude_mpm/services/communication/socketio.py +0 -1935
  396. claude_mpm/services/communication/websocket.py +0 -479
  397. claude_mpm/services/framework_claude_md_generator.py +0 -624
  398. claude_mpm/services/health_monitor.py +0 -893
  399. claude_mpm/services/infrastructure/memory_guardian.py +0 -770
  400. claude_mpm/services/mcp_gateway/server/mcp_server_simple.py +0 -444
  401. claude_mpm/services/optimized_hook_service.py +0 -542
  402. claude_mpm/services/project_analyzer.py +0 -864
  403. claude_mpm/services/project_registry.py +0 -608
  404. claude_mpm/services/standalone_socketio_server.py +0 -1300
  405. claude_mpm/services/ticket_manager_di.py +0 -318
  406. claude_mpm/services/ticketing_service_original.py +0 -510
  407. claude_mpm/utils/paths.py +0 -395
  408. claude_mpm/utils/platform_memory.py +0 -524
  409. claude_mpm-3.9.9.dist-info/RECORD +0 -293
  410. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/WHEEL +0 -0
  411. {claude_mpm-3.9.9.dist-info → claude_mpm-4.0.3.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,5 @@
1
+ from pathlib import Path
2
+
1
3
  """
2
4
  Claude Code Frontmatter Validator
3
5
 
@@ -6,216 +8,235 @@ Critical for ensuring agents work correctly with Claude Desktop.
6
8
  """
7
9
 
8
10
  import re
9
- from pathlib import Path
10
11
  from typing import Dict, List, Optional, Tuple
12
+
11
13
  import yaml
12
14
 
13
15
 
14
16
  class FrontmatterValidator:
15
17
  """Validates agent frontmatter against Claude Code specification."""
16
-
18
+
17
19
  # Claude Code name pattern: lowercase letters, numbers, hyphens only
18
20
  # NO UNDERSCORES, NO UPPERCASE, NO SPECIAL CHARACTERS
19
- NAME_PATTERN = re.compile(r'^[a-z0-9]+(-[a-z0-9]+)*$')
20
-
21
+ NAME_PATTERN = re.compile(r"^[a-z0-9]+(-[a-z0-9]+)*$")
22
+
21
23
  # Valid tool names (from Claude Code spec)
22
24
  VALID_TOOLS = {
23
- 'Read', 'Write', 'Edit', 'MultiEdit', 'Bash', 'Grep', 'Glob', 'LS',
24
- 'WebSearch', 'WebFetch', 'TodoWrite', 'BashOutput', 'KillBash',
25
- 'NotebookEdit', 'Task', 'ExitPlanMode'
25
+ "Read",
26
+ "Write",
27
+ "Edit",
28
+ "MultiEdit",
29
+ "Bash",
30
+ "Grep",
31
+ "Glob",
32
+ "LS",
33
+ "WebSearch",
34
+ "WebFetch",
35
+ "TodoWrite",
36
+ "BashOutput",
37
+ "KillBash",
38
+ "NotebookEdit",
39
+ "Task",
40
+ "ExitPlanMode",
26
41
  }
27
-
42
+
28
43
  # Valid model tiers
29
- VALID_MODELS = {'opus', 'sonnet', 'haiku'}
30
-
44
+ VALID_MODELS = {"opus", "sonnet", "haiku"}
45
+
31
46
  # Required fields in frontmatter
32
- REQUIRED_FIELDS = {'name', 'description', 'tools'}
33
-
47
+ REQUIRED_FIELDS = {"name", "description", "tools"}
48
+
34
49
  @classmethod
35
50
  def validate_name(cls, name: str) -> Tuple[bool, Optional[str]]:
36
51
  """
37
52
  Validate agent name field against Claude Code spec.
38
-
53
+
39
54
  Args:
40
55
  name: Agent name to validate
41
-
56
+
42
57
  Returns:
43
58
  (is_valid, error_message)
44
59
  """
45
60
  if not name:
46
61
  return False, "Name field is required"
47
-
62
+
48
63
  if not cls.NAME_PATTERN.match(name):
49
64
  return False, (
50
65
  f"Invalid name '{name}'. Must match pattern ^[a-z0-9]+(-[a-z0-9]+)*$ "
51
66
  "(lowercase letters, numbers, and hyphens only - NO underscores!)"
52
67
  )
53
-
68
+
54
69
  if len(name) > 50:
55
70
  return False, f"Name '{name}' too long (max 50 characters)"
56
-
71
+
57
72
  return True, None
58
-
73
+
59
74
  @classmethod
60
75
  def validate_tools(cls, tools: str) -> Tuple[bool, Optional[str]]:
61
76
  """
62
77
  Validate tools field format and content.
63
-
78
+
64
79
  CRITICAL: Tools must be comma-separated WITHOUT spaces!
65
-
80
+
66
81
  Args:
67
82
  tools: Tools string to validate
68
-
83
+
69
84
  Returns:
70
85
  (is_valid, error_message)
71
86
  """
72
87
  if not tools:
73
88
  return False, "Tools field is required"
74
-
89
+
75
90
  # Check for spaces after commas (CRITICAL ERROR)
76
- if ', ' in tools:
91
+ if ", " in tools:
77
92
  return False, (
78
93
  f"CRITICAL: Tools contain spaces after commas! '{tools}' "
79
94
  "Must be comma-separated WITHOUT spaces (e.g., 'Read,Write,Edit')"
80
95
  )
81
-
96
+
82
97
  # Validate individual tools
83
- tool_list = tools.split(',')
98
+ tool_list = tools.split(",")
84
99
  invalid_tools = [t for t in tool_list if t not in cls.VALID_TOOLS]
85
-
100
+
86
101
  if invalid_tools:
87
- return False, f"Invalid tools: {', '.join(invalid_tools)}. Valid tools: {', '.join(sorted(cls.VALID_TOOLS))}"
88
-
102
+ return (
103
+ False,
104
+ f"Invalid tools: {', '.join(invalid_tools)}. Valid tools: {', '.join(sorted(cls.VALID_TOOLS))}",
105
+ )
106
+
89
107
  return True, None
90
-
108
+
91
109
  @classmethod
92
110
  def validate_model(cls, model: str) -> Tuple[bool, Optional[str]]:
93
111
  """
94
112
  Validate model field.
95
-
113
+
96
114
  Args:
97
115
  model: Model tier to validate
98
-
116
+
99
117
  Returns:
100
118
  (is_valid, error_message)
101
119
  """
102
120
  if model and model not in cls.VALID_MODELS:
103
- return False, f"Invalid model '{model}'. Must be one of: {', '.join(cls.VALID_MODELS)}"
104
-
121
+ return (
122
+ False,
123
+ f"Invalid model '{model}'. Must be one of: {', '.join(cls.VALID_MODELS)}",
124
+ )
125
+
105
126
  return True, None
106
-
127
+
107
128
  @classmethod
108
129
  def validate_frontmatter(cls, frontmatter: Dict) -> List[str]:
109
130
  """
110
131
  Validate complete frontmatter structure.
111
-
132
+
112
133
  Args:
113
134
  frontmatter: Parsed frontmatter dictionary
114
-
135
+
115
136
  Returns:
116
137
  List of validation errors (empty if valid)
117
138
  """
118
139
  errors = []
119
-
140
+
120
141
  # Check required fields
121
142
  missing = cls.REQUIRED_FIELDS - set(frontmatter.keys())
122
143
  if missing:
123
144
  errors.append(f"Missing required fields: {', '.join(missing)}")
124
-
145
+
125
146
  # Validate name
126
- if 'name' in frontmatter:
127
- valid, error = cls.validate_name(frontmatter['name'])
147
+ if "name" in frontmatter:
148
+ valid, error = cls.validate_name(frontmatter["name"])
128
149
  if not valid:
129
150
  errors.append(error)
130
-
151
+
131
152
  # Validate tools
132
- if 'tools' in frontmatter:
133
- valid, error = cls.validate_tools(frontmatter['tools'])
153
+ if "tools" in frontmatter:
154
+ valid, error = cls.validate_tools(frontmatter["tools"])
134
155
  if not valid:
135
156
  errors.append(error)
136
-
157
+
137
158
  # Validate model
138
- if 'model' in frontmatter:
139
- valid, error = cls.validate_model(frontmatter['model'])
159
+ if "model" in frontmatter:
160
+ valid, error = cls.validate_model(frontmatter["model"])
140
161
  if not valid:
141
162
  errors.append(error)
142
-
163
+
143
164
  # Validate description
144
- if 'description' in frontmatter:
145
- desc = frontmatter['description']
165
+ if "description" in frontmatter:
166
+ desc = frontmatter["description"]
146
167
  if len(desc) < 10:
147
168
  errors.append(f"Description too short ({len(desc)} chars, min 10)")
148
169
  if len(desc) > 200:
149
170
  errors.append(f"Description too long ({len(desc)} chars, max 200)")
150
-
171
+
151
172
  return errors
152
-
173
+
153
174
  @classmethod
154
175
  def validate_agent_file(cls, file_path: Path) -> List[str]:
155
176
  """
156
177
  Validate an agent markdown file.
157
-
178
+
158
179
  Args:
159
180
  file_path: Path to agent .md file
160
-
181
+
161
182
  Returns:
162
183
  List of validation errors (empty if valid)
163
184
  """
164
185
  errors = []
165
-
186
+
166
187
  try:
167
- with open(file_path, 'r') as f:
188
+ with open(file_path, "r") as f:
168
189
  content = f.read()
169
-
190
+
170
191
  # Check for frontmatter markers
171
- if not content.startswith('---\n'):
192
+ if not content.startswith("---\n"):
172
193
  errors.append("File must start with '---' frontmatter marker")
173
194
  return errors
174
-
195
+
175
196
  # Extract frontmatter
176
- end_marker = content.find('\n---\n', 4)
197
+ end_marker = content.find("\n---\n", 4)
177
198
  if end_marker == -1:
178
199
  errors.append("Missing closing '---' frontmatter marker")
179
200
  return errors
180
-
201
+
181
202
  frontmatter_text = content[4:end_marker]
182
-
203
+
183
204
  # Parse YAML
184
205
  try:
185
206
  frontmatter = yaml.safe_load(frontmatter_text)
186
207
  except yaml.YAMLError as e:
187
208
  errors.append(f"Invalid YAML in frontmatter: {e}")
188
209
  return errors
189
-
210
+
190
211
  # Validate frontmatter content
191
212
  validation_errors = cls.validate_frontmatter(frontmatter)
192
213
  errors.extend(validation_errors)
193
-
214
+
194
215
  except Exception as e:
195
216
  errors.append(f"Error reading file: {e}")
196
-
217
+
197
218
  return errors
198
219
 
199
220
 
200
221
  def main():
201
222
  """Command-line validation tool."""
202
223
  import sys
203
-
224
+
204
225
  if len(sys.argv) < 2:
205
226
  print("Usage: python frontmatter_validator.py <agent.md> [agent2.md ...]")
206
227
  sys.exit(1)
207
-
228
+
208
229
  all_valid = True
209
-
230
+
210
231
  for file_path in sys.argv[1:]:
211
232
  path = Path(file_path)
212
233
  if not path.exists():
213
234
  print(f"❌ {file_path}: File not found")
214
235
  all_valid = False
215
236
  continue
216
-
237
+
217
238
  errors = FrontmatterValidator.validate_agent_file(path)
218
-
239
+
219
240
  if errors:
220
241
  print(f"❌ {file_path}:")
221
242
  for error in errors:
@@ -223,9 +244,9 @@ def main():
223
244
  all_valid = False
224
245
  else:
225
246
  print(f"✅ {file_path}: Valid")
226
-
247
+
227
248
  sys.exit(0 if all_valid else 1)
228
249
 
229
250
 
230
251
  if __name__ == "__main__":
231
- main()
252
+ main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.9.9
3
+ Version: 4.0.3
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"
@@ -45,6 +46,7 @@ Requires-Dist: pytest-cov; extra == "dev"
45
46
  Requires-Dist: black; extra == "dev"
46
47
  Requires-Dist: flake8; extra == "dev"
47
48
  Requires-Dist: mypy; extra == "dev"
49
+ Requires-Dist: pre-commit; extra == "dev"
48
50
  Provides-Extra: docs
49
51
  Requires-Dist: sphinx>=7.2.0; extra == "docs"
50
52
  Requires-Dist: sphinx-rtd-theme>=1.3.0; extra == "docs"
@@ -110,6 +112,7 @@ A powerful orchestration framework for Claude Code that enables multi-agent work
110
112
  - 🧠 **Agent Memory System**: Persistent learning with project-specific knowledge retention
111
113
  - 🔄 **Session Management**: Resume previous sessions with `--resume`
112
114
  - 📊 **Real-Time Monitoring**: Live dashboard with `--monitor` flag
115
+ - 🛡️ **Memory Guardian (Experimental)**: Automatic memory monitoring and intelligent restarts to prevent crashes
113
116
  - 📁 **Multi-Project Support**: Per-session working directories
114
117
  - 🔍 **Git Integration**: View diffs and track changes across projects
115
118
  - 🎯 **Smart Task Orchestration**: PM agent intelligently routes work to specialists
@@ -130,6 +133,9 @@ claude-mpm
130
133
 
131
134
  # Start with monitoring dashboard
132
135
  claude-mpm run --monitor
136
+
137
+ # Start with memory protection (prevents crashes from large conversations)
138
+ claude-mpm run-guarded
133
139
  ```
134
140
 
135
141
  See [QUICKSTART.md](QUICKSTART.md) for complete usage examples.
@@ -149,10 +155,25 @@ The PM agent automatically delegates work to specialized agents including Resear
149
155
  ### Agent Memory System
150
156
  Agents learn project-specific patterns and remember insights across sessions. Initialize with `claude-mpm memory init`.
151
157
 
158
+ ### Memory Guardian System (Experimental)
159
+ **⚠️ Beta Feature** - Prevents memory-related crashes through intelligent monitoring and automatic restarts with state preservation.
160
+
161
+ ```bash
162
+ # Start with memory protection (recommended for long sessions)
163
+ claude-mpm run-guarded --accept-experimental
164
+
165
+ # Custom memory threshold for your system
166
+ claude-mpm run-guarded --memory-threshold 16000 --accept-experimental # 16GB
167
+ ```
168
+
169
+ **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.
170
+
171
+ **Note:** This is an experimental feature in beta. Use `--accept-experimental` to suppress warnings.
172
+
152
173
  ### Real-Time Monitoring
153
174
  The `--monitor` flag opens a web dashboard showing live agent activity, file operations, and session management.
154
175
 
155
- See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md](docs/developer/11-dashboard/README.md) for details.
176
+ 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
177
 
157
178
 
158
179
  ## Documentation
@@ -162,12 +183,15 @@ See [docs/MEMORY.md](docs/MEMORY.md) and [docs/developer/11-dashboard/README.md]
162
183
  - **[Installation Guide](docs/user/installation.md)** - Complete installation options
163
184
  - **[User Guide](docs/user/)** - Detailed usage documentation
164
185
  - **[Memory System](docs/MEMORY.md)** - Agent memory documentation
186
+ - **[Memory Guardian Guide](docs/USER_GUIDE_MEMORY_GUARDIAN.md)** - Comprehensive memory protection documentation
165
187
  - **[Troubleshooting](docs/user/troubleshooting.md)** - Common issues and solutions
166
188
 
167
189
  ### Developer Documentation
168
190
  - **[Architecture Overview](docs/ARCHITECTURE.md)** - Service-oriented architecture and design
169
191
  - **[API Reference](docs/api/)** - Complete API documentation with Sphinx
170
192
  - **[Service Layer Guide](docs/developer/SERVICES.md)** - Service interfaces and implementations
193
+ - **[Memory Guardian Technical](docs/MEMORY_GUARDIAN_TECHNICAL.md)** - Technical architecture and implementation details
194
+ - **[Memory Guardian Configuration](docs/MEMORY_GUARDIAN_CONFIG.md)** - Complete configuration reference
171
195
  - **[Performance Guide](docs/PERFORMANCE.md)** - Optimization and caching strategies
172
196
  - **[Security Guide](docs/SECURITY.md)** - Security framework and best practices
173
197
  - **[Testing Guide](docs/TESTING.md)** - Testing patterns and strategies
@@ -187,9 +211,34 @@ See [CHANGELOG.md](CHANGELOG.md) for full history and [docs/MIGRATION.md](docs/M
187
211
 
188
212
  ## Development
189
213
 
214
+ ### Quick Development Setup
215
+ ```bash
216
+ # Complete development setup with code formatting and quality tools
217
+ make dev-complete
218
+
219
+ # Or step by step:
220
+ make setup-dev # Install in development mode
221
+ make setup-pre-commit # Set up automated code formatting
222
+ ```
223
+
224
+ ### Code Quality & Formatting
225
+ The project uses automated code formatting and quality checks:
226
+ - **Black** for code formatting
227
+ - **isort** for import sorting
228
+ - **flake8** for linting
229
+ - **mypy** for type checking
230
+ - **Pre-commit hooks** for automatic enforcement
231
+
232
+ See [docs/developer/CODE_FORMATTING.md](docs/developer/CODE_FORMATTING.md) for details.
233
+
190
234
  ### Contributing
191
235
  Contributions are welcome! Please see our [project structure guide](docs/STRUCTURE.md) and follow the established patterns.
192
236
 
237
+ **Development Workflow**:
238
+ 1. Run `make dev-complete` to set up your environment
239
+ 2. Code formatting happens automatically on commit
240
+ 3. All code must pass quality checks before merging
241
+
193
242
  ### Project Structure
194
243
  See [docs/STRUCTURE.md](docs/STRUCTURE.md) for codebase organization.
195
244