claude-mpm 3.9.11__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 (419) 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 +1 -1
  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 +79 -51
  31. claude_mpm/cli/__main__.py +3 -2
  32. claude_mpm/cli/commands/__init__.py +20 -20
  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 +140 -905
  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 -1156
  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 +71 -73
  69. claude_mpm/config/paths.py +94 -208
  70. claude_mpm/config/socketio_config.py +84 -73
  71. claude_mpm/constants.py +35 -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 +233 -199
  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 +30 -13
  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 +13 -20
  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 +87 -84
  298. claude_mpm/services/mcp_gateway/main.py +287 -137
  299. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  300. claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
  301. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  302. claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
  303. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
  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 +109 -119
  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 +19 -533
  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 +2 -2
  358. claude_mpm/storage/state_storage.py +177 -181
  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.11.dist-info → claude_mpm-4.0.3.dist-info}/METADATA +27 -1
  381. claude_mpm-4.0.3.dist-info/RECORD +402 -0
  382. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/entry_points.txt +1 -0
  383. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/licenses/LICENSE +1 -1
  384. claude_mpm/cli/commands/run_guarded.py +0 -511
  385. claude_mpm/config/memory_guardian_config.py +0 -325
  386. claude_mpm/config/memory_guardian_yaml.py +0 -335
  387. claude_mpm/core/config_paths.py +0 -150
  388. claude_mpm/core/memory_aware_runner.py +0 -353
  389. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  390. claude_mpm/deployment_paths.py +0 -261
  391. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  392. claude_mpm/models/state_models.py +0 -433
  393. claude_mpm/services/agent/__init__.py +0 -24
  394. claude_mpm/services/agent/deployment.py +0 -2548
  395. claude_mpm/services/agent/management.py +0 -598
  396. claude_mpm/services/agent/registry.py +0 -813
  397. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  398. claude_mpm/services/communication/socketio.py +0 -1935
  399. claude_mpm/services/communication/websocket.py +0 -479
  400. claude_mpm/services/framework_claude_md_generator.py +0 -624
  401. claude_mpm/services/health_monitor.py +0 -893
  402. claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
  403. claude_mpm/services/infrastructure/health_monitor.py +0 -775
  404. claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
  405. claude_mpm/services/infrastructure/memory_guardian.py +0 -944
  406. claude_mpm/services/infrastructure/restart_protection.py +0 -642
  407. claude_mpm/services/infrastructure/state_manager.py +0 -774
  408. claude_mpm/services/mcp_gateway/manager.py +0 -334
  409. claude_mpm/services/optimized_hook_service.py +0 -542
  410. claude_mpm/services/project_analyzer.py +0 -864
  411. claude_mpm/services/project_registry.py +0 -608
  412. claude_mpm/services/standalone_socketio_server.py +0 -1300
  413. claude_mpm/services/ticket_manager_di.py +0 -318
  414. claude_mpm/services/ticketing_service_original.py +0 -510
  415. claude_mpm/utils/paths.py +0 -395
  416. claude_mpm/utils/platform_memory.py +0 -524
  417. claude_mpm-3.9.11.dist-info/RECORD +0 -306
  418. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.3.dist-info}/WHEEL +0 -0
  419. {claude_mpm-3.9.11.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
  Configuration management commands for claude-mpm CLI.
3
5
 
@@ -12,39 +14,37 @@ DESIGN DECISIONS:
12
14
  - Use consistent error codes for CI/CD integration
13
15
  """
14
16
 
15
- import sys
16
- from pathlib import Path
17
- from typing import Optional
18
17
  import json
18
+
19
19
  import yaml
20
+ from rich.panel import Panel
21
+ from rich.syntax import Syntax
22
+ from rich.table import Table
20
23
 
21
24
  from ...core.config import Config
22
25
  from ...core.logger import get_logger
23
26
  from ...utils.console import console
24
- from rich.table import Table
25
- from rich.syntax import Syntax
26
- from rich.panel import Panel
27
27
 
28
28
  logger = get_logger(__name__)
29
29
 
30
30
 
31
31
  def manage_config(args) -> int:
32
32
  """Main entry point for configuration management commands.
33
-
33
+
34
34
  WHY: This dispatcher handles different configuration subcommands,
35
35
  routing to the appropriate handler based on user input.
36
-
36
+
37
37
  Args:
38
38
  args: Parsed command line arguments
39
-
39
+
40
40
  Returns:
41
41
  Exit code (0 for success, non-zero for failure)
42
42
  """
43
- if args.config_command == 'validate':
43
+ if args.config_command == "validate":
44
44
  return validate_config(args)
45
- elif args.config_command == 'view':
45
+ elif args.config_command == "view":
46
46
  return view_config(args)
47
- elif args.config_command == 'status':
47
+ elif args.config_command == "status":
48
48
  return show_config_status(args)
49
49
  else:
50
50
  console.print(f"[red]Unknown config command: {args.config_command}[/red]")
@@ -53,56 +53,64 @@ def manage_config(args) -> int:
53
53
 
54
54
  def validate_config(args) -> int:
55
55
  """Validate configuration file.
56
-
56
+
57
57
  WHY: Users need immediate feedback on configuration validity with
58
58
  clear guidance on how to fix any issues found.
59
-
59
+
60
60
  Args:
61
61
  args: Command line arguments including config file path
62
-
62
+
63
63
  Returns:
64
64
  Exit code (0=valid, 1=errors, 2=warnings in strict mode)
65
65
  """
66
66
  config_file = args.config_file or Path(".claude-mpm/configuration.yaml")
67
-
67
+
68
68
  console.print(f"\n[bold blue]Validating configuration: {config_file}[/bold blue]\n")
69
-
69
+
70
70
  # Check if file exists
71
71
  if not config_file.exists():
72
72
  console.print(f"[red]✗ Configuration file not found: {config_file}[/red]")
73
- console.print(f"[yellow]→ Create with: mkdir -p {config_file.parent} && touch {config_file}[/yellow]")
73
+ console.print(
74
+ f"[yellow]→ Create with: mkdir -p {config_file.parent} && touch {config_file}[/yellow]"
75
+ )
74
76
  return 1
75
-
77
+
76
78
  try:
77
79
  # Try to load configuration
78
80
  config = Config(config_file=config_file)
79
-
81
+
80
82
  # Validate configuration
81
83
  is_valid, errors, warnings = config.validate_configuration()
82
-
84
+
83
85
  # Display results
84
86
  if errors:
85
87
  console.print("[bold red]ERRORS:[/bold red]")
86
88
  for error in errors:
87
89
  console.print(f" [red]✗ {error}[/red]")
88
-
90
+
89
91
  if warnings:
90
92
  console.print("\n[bold yellow]WARNINGS:[/bold yellow]")
91
93
  for warning in warnings:
92
94
  console.print(f" [yellow]⚠ {warning}[/yellow]")
93
-
95
+
94
96
  # Show summary
95
97
  if is_valid and not warnings:
96
98
  console.print("\n[green]✓ Configuration is valid[/green]")
97
99
  return 0
98
100
  elif is_valid and warnings:
99
- console.print(f"\n[green]✓ Configuration is valid with {len(warnings)} warning(s)[/green]")
101
+ console.print(
102
+ f"\n[green]✓ Configuration is valid with {len(warnings)} warning(s)[/green]"
103
+ )
100
104
  return 2 if args.strict else 0
101
105
  else:
102
- console.print(f"\n[red]✗ Configuration validation failed with {len(errors)} error(s)[/red]")
103
- console.print("\n[yellow]Run 'python scripts/validate_configuration.py' for detailed analysis[/yellow]")
106
+ console.print(
107
+ f"\n[red] Configuration validation failed with {len(errors)} error(s)[/red]"
108
+ )
109
+ console.print(
110
+ "\n[yellow]Run 'python scripts/validate_configuration.py' for detailed analysis[/yellow]"
111
+ )
104
112
  return 1
105
-
113
+
106
114
  except Exception as e:
107
115
  console.print(f"[red]Failed to validate configuration: {e}[/red]")
108
116
  logger.exception("Configuration validation error")
@@ -111,13 +119,13 @@ def validate_config(args) -> int:
111
119
 
112
120
  def view_config(args) -> int:
113
121
  """View current configuration.
114
-
122
+
115
123
  WHY: Users need to see their effective configuration including
116
124
  defaults and environment variable overrides.
117
-
125
+
118
126
  Args:
119
127
  args: Command line arguments
120
-
128
+
121
129
  Returns:
122
130
  Exit code (0 for success)
123
131
  """
@@ -125,32 +133,34 @@ def view_config(args) -> int:
125
133
  # Load configuration
126
134
  config_file = args.config_file
127
135
  config = Config(config_file=config_file)
128
-
136
+
129
137
  # Get configuration as dictionary
130
138
  config_dict = config.to_dict()
131
-
139
+
132
140
  # Filter by section if specified
133
141
  if args.section:
134
142
  if args.section in config_dict:
135
143
  config_dict = {args.section: config_dict[args.section]}
136
144
  else:
137
- console.print(f"[red]Section '{args.section}' not found in configuration[/red]")
145
+ console.print(
146
+ f"[red]Section '{args.section}' not found in configuration[/red]"
147
+ )
138
148
  return 1
139
-
149
+
140
150
  # Format output
141
- if args.format == 'json':
151
+ if args.format == "json":
142
152
  output = json.dumps(config_dict, indent=2)
143
153
  syntax = Syntax(output, "json", theme="monokai", line_numbers=False)
144
154
  console.print(syntax)
145
- elif args.format == 'yaml':
155
+ elif args.format == "yaml":
146
156
  output = yaml.dump(config_dict, default_flow_style=False, sort_keys=False)
147
157
  syntax = Syntax(output, "yaml", theme="monokai", line_numbers=False)
148
158
  console.print(syntax)
149
159
  else: # table format
150
160
  display_config_table(config_dict)
151
-
161
+
152
162
  return 0
153
-
163
+
154
164
  except Exception as e:
155
165
  console.print(f"[red]Failed to view configuration: {e}[/red]")
156
166
  logger.exception("Configuration view error")
@@ -159,32 +169,32 @@ def view_config(args) -> int:
159
169
 
160
170
  def show_config_status(args) -> int:
161
171
  """Show configuration status and health.
162
-
172
+
163
173
  WHY: Users need a quick way to check if their configuration is
164
174
  working correctly, especially for response logging.
165
-
175
+
166
176
  Args:
167
177
  args: Command line arguments
168
-
178
+
169
179
  Returns:
170
180
  Exit code (0 for success)
171
181
  """
172
182
  try:
173
183
  # Load configuration
174
184
  config = Config(config_file=args.config_file)
175
-
185
+
176
186
  # Get status
177
187
  status = config.get_configuration_status()
178
-
188
+
179
189
  # Create status panel
180
190
  panel_content = []
181
-
191
+
182
192
  # Basic info
183
193
  panel_content.append(f"[bold]Configuration Status[/bold]")
184
194
  panel_content.append(f"Valid: {'✓' if status['valid'] else '✗'}")
185
195
  panel_content.append(f"Loaded from: {status.get('loaded_from', 'defaults')}")
186
196
  panel_content.append(f"Total keys: {status['key_count']}")
187
-
197
+
188
198
  # Feature status
189
199
  panel_content.append("\n[bold]Features:[/bold]")
190
200
  panel_content.append(
@@ -193,52 +203,59 @@ def show_config_status(args) -> int:
193
203
  panel_content.append(
194
204
  f"Memory System: {'✓ Enabled' if status['memory_enabled'] else '✗ Disabled'}"
195
205
  )
196
-
206
+
197
207
  # Errors and warnings
198
- if status['errors']:
208
+ if status["errors"]:
199
209
  panel_content.append(f"\n[red]Errors: {len(status['errors'])}[/red]")
200
- if status['warnings']:
201
- panel_content.append(f"\n[yellow]Warnings: {len(status['warnings'])}[/yellow]")
202
-
210
+ if status["warnings"]:
211
+ panel_content.append(
212
+ f"\n[yellow]Warnings: {len(status['warnings'])}[/yellow]"
213
+ )
214
+
203
215
  # Display panel
204
216
  panel = Panel(
205
217
  "\n".join(panel_content),
206
218
  title="Configuration Status",
207
- border_style="green" if status['valid'] else "red"
219
+ border_style="green" if status["valid"] else "red",
208
220
  )
209
221
  console.print(panel)
210
-
222
+
211
223
  # Show detailed errors/warnings if verbose
212
224
  if args.verbose:
213
- if status['errors']:
225
+ if status["errors"]:
214
226
  console.print("\n[bold red]Errors:[/bold red]")
215
- for error in status['errors']:
227
+ for error in status["errors"]:
216
228
  console.print(f" [red]• {error}[/red]")
217
-
218
- if status['warnings']:
229
+
230
+ if status["warnings"]:
219
231
  console.print("\n[bold yellow]Warnings:[/bold yellow]")
220
- for warning in status['warnings']:
232
+ for warning in status["warnings"]:
221
233
  console.print(f" [yellow]• {warning}[/yellow]")
222
-
234
+
223
235
  # Check response logging specifically
224
236
  if args.check_response_logging:
225
237
  console.print("\n[bold]Response Logging Configuration:[/bold]")
226
- rl_config = config.get('response_logging', {})
227
-
238
+ rl_config = config.get("response_logging", {})
239
+
228
240
  table = Table(show_header=True)
229
241
  table.add_column("Setting", style="cyan")
230
242
  table.add_column("Value", style="white")
231
-
232
- table.add_row("Enabled", str(rl_config.get('enabled', False)))
233
- table.add_row("Format", rl_config.get('format', 'json'))
234
- table.add_row("Use Async", str(rl_config.get('use_async', True)))
235
- table.add_row("Session Directory", rl_config.get('session_directory', '.claude-mpm/responses'))
236
- table.add_row("Compression", str(rl_config.get('enable_compression', False)))
237
-
243
+
244
+ table.add_row("Enabled", str(rl_config.get("enabled", False)))
245
+ table.add_row("Format", rl_config.get("format", "json"))
246
+ table.add_row("Use Async", str(rl_config.get("use_async", True)))
247
+ table.add_row(
248
+ "Session Directory",
249
+ rl_config.get("session_directory", ".claude-mpm/responses"),
250
+ )
251
+ table.add_row(
252
+ "Compression", str(rl_config.get("enable_compression", False))
253
+ )
254
+
238
255
  console.print(table)
239
-
240
- return 0 if status['valid'] else 1
241
-
256
+
257
+ return 0 if status["valid"] else 1
258
+
242
259
  except Exception as e:
243
260
  console.print(f"[red]Failed to get configuration status: {e}[/red]")
244
261
  logger.exception("Configuration status error")
@@ -247,7 +264,7 @@ def show_config_status(args) -> int:
247
264
 
248
265
  def display_config_table(config_dict: dict, prefix: str = "") -> None:
249
266
  """Display configuration as a formatted table.
250
-
267
+
251
268
  Args:
252
269
  config_dict: Configuration dictionary
253
270
  prefix: Key prefix for nested values
@@ -256,11 +273,11 @@ def display_config_table(config_dict: dict, prefix: str = "") -> None:
256
273
  table.add_column("Key", style="cyan", no_wrap=True)
257
274
  table.add_column("Value", style="white")
258
275
  table.add_column("Type", style="dim")
259
-
276
+
260
277
  def add_items(d: dict, prefix: str = ""):
261
278
  for key, value in d.items():
262
279
  full_key = f"{prefix}.{key}" if prefix else key
263
-
280
+
264
281
  if isinstance(value, dict) and value:
265
282
  # Add nested items
266
283
  add_items(value, full_key)
@@ -269,9 +286,9 @@ def display_config_table(config_dict: dict, prefix: str = "") -> None:
269
286
  value_str = str(value)
270
287
  if len(value_str) > 50:
271
288
  value_str = value_str[:47] + "..."
272
-
289
+
273
290
  type_str = type(value).__name__
274
291
  table.add_row(full_key, value_str, type_str)
275
-
292
+
276
293
  add_items(config_dict)
277
- console.print(table)
294
+ console.print(table)
@@ -1,3 +1,5 @@
1
+ from pathlib import Path
2
+
1
3
  """
2
4
  Info command implementation for claude-mpm.
3
5
 
@@ -6,7 +8,6 @@ users understand their claude-mpm setup and troubleshoot issues.
6
8
  """
7
9
 
8
10
  import shutil
9
- from pathlib import Path
10
11
 
11
12
  from ...core.logger import get_logger
12
13
 
@@ -14,14 +15,14 @@ from ...core.logger import get_logger
14
15
  def show_info(args):
15
16
  """
16
17
  Show framework and configuration information.
17
-
18
+
18
19
  WHY: Users need to verify their installation, check dependencies, and understand
19
20
  what agents are available. This command provides a comprehensive overview of
20
21
  the claude-mpm environment.
21
-
22
+
22
23
  DESIGN DECISION: We check for all major components and dependencies, showing
23
24
  both what's working (✓) and what's missing (✗) to help with troubleshooting.
24
-
25
+
25
26
  Args:
26
27
  args: Parsed command line arguments
27
28
  """
@@ -29,10 +30,10 @@ def show_info(args):
29
30
  from ...core.framework_loader import FrameworkLoader
30
31
  except ImportError:
31
32
  from claude_mpm.core.framework_loader import FrameworkLoader
32
-
33
+
33
34
  print("Claude MPM - Multi-Agent Project Manager")
34
35
  print("=" * 50)
35
-
36
+
36
37
  # Framework info
37
38
  loader = FrameworkLoader(args.framework_path)
38
39
  if loader.framework_content["loaded"]:
@@ -42,14 +43,13 @@ def show_info(args):
42
43
  print(f"Agents: {', '.join(loader.get_agent_list())}")
43
44
  else:
44
45
  print("Framework: Not found (using minimal instructions)")
45
-
46
+
46
47
  print()
47
-
48
+
48
49
  # Configuration
49
50
  print("Configuration:")
50
51
  print(f" Log directory: {args.log_dir or '~/.claude-mpm/logs'}")
51
- print(f" Debug mode: {args.debug}")
52
-
52
+
53
53
  # Show agent hierarchy
54
54
  if loader.agent_registry:
55
55
  hierarchy = loader.agent_registry.get_agent_hierarchy()
@@ -57,28 +57,29 @@ def show_info(args):
57
57
  print(f" Project agents: {len(hierarchy['project'])}")
58
58
  print(f" User agents: {len(hierarchy['user'])}")
59
59
  print(f" System agents: {len(hierarchy['system'])}")
60
-
60
+
61
61
  # Show core agents
62
62
  core_agents = loader.agent_registry.get_core_agents()
63
63
  print(f"\nCore Agents: {', '.join(core_agents)}")
64
-
64
+
65
65
  # Check dependencies
66
66
  print("\nDependencies:")
67
-
67
+
68
68
  # Check Claude CLI
69
69
  claude_path = shutil.which("claude")
70
70
  if claude_path:
71
71
  print(f" ✓ Claude CLI: {claude_path}")
72
72
  else:
73
73
  print(" ✗ Claude CLI: Not found in PATH")
74
-
74
+
75
75
  # Check ai-trackdown-pytools
76
76
  try:
77
77
  import ai_trackdown_pytools
78
+
78
79
  print(" ✓ ai-trackdown-pytools: Installed")
79
80
  except ImportError:
80
81
  print(" ✗ ai-trackdown-pytools: Not installed")
81
-
82
+
82
83
  # Check Claude Code hooks
83
84
  claude_settings = Path.home() / ".claude" / "settings.json"
84
85
  if claude_settings.exists():
@@ -86,4 +87,4 @@ def show_info(args):
86
87
  print(" Use /mpm commands in Claude Code")
87
88
  else:
88
89
  print(" ✗ Claude Code Hooks: Not installed")
89
- print(" Run: python scripts/install_hooks.py")
90
+ print(" Run: python scripts/install_hooks.py")