claude-mpm 3.9.11__py3-none-any.whl → 4.0.4__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 (434) 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 +2 -2
  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 +330 -86
  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 +363 -220
  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 +124 -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/built/components/agent-inference.js +2 -0
  113. claude_mpm/dashboard/static/built/components/event-processor.js +2 -0
  114. claude_mpm/dashboard/static/built/components/event-viewer.js +2 -0
  115. claude_mpm/dashboard/static/built/components/export-manager.js +2 -0
  116. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +2 -0
  117. claude_mpm/dashboard/static/built/components/hud-library-loader.js +2 -0
  118. claude_mpm/dashboard/static/built/components/hud-manager.js +2 -0
  119. claude_mpm/dashboard/static/built/components/hud-visualizer.js +2 -0
  120. claude_mpm/dashboard/static/built/components/module-viewer.js +2 -0
  121. claude_mpm/dashboard/static/built/components/session-manager.js +2 -0
  122. claude_mpm/dashboard/static/built/components/socket-manager.js +2 -0
  123. claude_mpm/dashboard/static/built/components/ui-state-manager.js +2 -0
  124. claude_mpm/dashboard/static/built/components/working-directory.js +2 -0
  125. claude_mpm/dashboard/static/built/dashboard.js +2 -0
  126. claude_mpm/dashboard/static/built/socket-client.js +2 -0
  127. claude_mpm/dashboard/static/css/dashboard.css +27 -8
  128. claude_mpm/dashboard/static/dist/components/agent-inference.js +2 -0
  129. claude_mpm/dashboard/static/dist/components/event-processor.js +2 -0
  130. claude_mpm/dashboard/static/dist/components/event-viewer.js +2 -0
  131. claude_mpm/dashboard/static/dist/components/export-manager.js +2 -0
  132. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +2 -0
  133. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +2 -0
  134. claude_mpm/dashboard/static/dist/components/hud-manager.js +2 -0
  135. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +2 -0
  136. claude_mpm/dashboard/static/dist/components/module-viewer.js +2 -0
  137. claude_mpm/dashboard/static/dist/components/session-manager.js +2 -0
  138. claude_mpm/dashboard/static/dist/components/socket-manager.js +2 -0
  139. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +2 -0
  140. claude_mpm/dashboard/static/dist/components/working-directory.js +2 -0
  141. claude_mpm/dashboard/static/dist/dashboard.js +2 -0
  142. claude_mpm/dashboard/static/dist/socket-client.js +2 -0
  143. claude_mpm/dashboard/static/js/components/agent-inference.js +80 -76
  144. claude_mpm/dashboard/static/js/components/event-processor.js +71 -67
  145. claude_mpm/dashboard/static/js/components/event-viewer.js +93 -72
  146. claude_mpm/dashboard/static/js/components/export-manager.js +31 -28
  147. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +110 -96
  148. claude_mpm/dashboard/static/js/components/hud-library-loader.js +11 -11
  149. claude_mpm/dashboard/static/js/components/hud-manager.js +73 -73
  150. claude_mpm/dashboard/static/js/components/hud-visualizer.js +163 -163
  151. claude_mpm/dashboard/static/js/components/module-viewer.js +305 -233
  152. claude_mpm/dashboard/static/js/components/session-manager.js +32 -29
  153. claude_mpm/dashboard/static/js/components/socket-manager.js +27 -20
  154. claude_mpm/dashboard/static/js/components/ui-state-manager.js +21 -18
  155. claude_mpm/dashboard/static/js/components/working-directory.js +74 -71
  156. claude_mpm/dashboard/static/js/dashboard.js +178 -453
  157. claude_mpm/dashboard/static/js/extension-error-handler.js +164 -0
  158. claude_mpm/dashboard/static/js/socket-client.js +133 -53
  159. claude_mpm/dashboard/templates/index.html +40 -50
  160. claude_mpm/experimental/cli_enhancements.py +60 -58
  161. claude_mpm/generators/__init__.py +1 -1
  162. claude_mpm/generators/agent_profile_generator.py +75 -65
  163. claude_mpm/hooks/__init__.py +1 -1
  164. claude_mpm/hooks/base_hook.py +33 -28
  165. claude_mpm/hooks/claude_hooks/__init__.py +1 -1
  166. claude_mpm/hooks/claude_hooks/connection_pool.py +120 -0
  167. claude_mpm/hooks/claude_hooks/event_handlers.py +743 -0
  168. claude_mpm/hooks/claude_hooks/hook_handler.py +415 -1331
  169. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +4 -4
  170. claude_mpm/hooks/claude_hooks/memory_integration.py +221 -0
  171. claude_mpm/hooks/claude_hooks/response_tracking.py +348 -0
  172. claude_mpm/hooks/claude_hooks/tool_analysis.py +230 -0
  173. claude_mpm/hooks/memory_integration_hook.py +140 -100
  174. claude_mpm/hooks/tool_call_interceptor.py +89 -76
  175. claude_mpm/hooks/validation_hooks.py +57 -49
  176. claude_mpm/init.py +145 -121
  177. claude_mpm/models/__init__.py +9 -9
  178. claude_mpm/models/agent_definition.py +33 -23
  179. claude_mpm/models/agent_session.py +228 -200
  180. claude_mpm/scripts/__init__.py +1 -1
  181. claude_mpm/scripts/socketio_daemon.py +192 -75
  182. claude_mpm/scripts/socketio_server_manager.py +328 -0
  183. claude_mpm/scripts/start_activity_logging.py +25 -22
  184. claude_mpm/services/__init__.py +68 -43
  185. claude_mpm/services/agent_capabilities_service.py +271 -0
  186. claude_mpm/services/agents/__init__.py +23 -32
  187. claude_mpm/services/agents/deployment/__init__.py +3 -3
  188. claude_mpm/services/agents/deployment/agent_config_provider.py +310 -0
  189. claude_mpm/services/agents/deployment/agent_configuration_manager.py +359 -0
  190. claude_mpm/services/agents/deployment/agent_definition_factory.py +84 -0
  191. claude_mpm/services/agents/deployment/agent_deployment.py +415 -2113
  192. claude_mpm/services/agents/deployment/agent_discovery_service.py +387 -0
  193. claude_mpm/services/agents/deployment/agent_environment_manager.py +293 -0
  194. claude_mpm/services/agents/deployment/agent_filesystem_manager.py +387 -0
  195. claude_mpm/services/agents/deployment/agent_format_converter.py +453 -0
  196. claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +161 -0
  197. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +345 -495
  198. claude_mpm/services/agents/deployment/agent_metrics_collector.py +279 -0
  199. claude_mpm/services/agents/deployment/agent_restore_handler.py +88 -0
  200. claude_mpm/services/agents/deployment/agent_template_builder.py +406 -0
  201. claude_mpm/services/agents/deployment/agent_validator.py +352 -0
  202. claude_mpm/services/agents/deployment/agent_version_manager.py +313 -0
  203. claude_mpm/services/agents/deployment/agent_versioning.py +6 -9
  204. claude_mpm/services/agents/deployment/agents_directory_resolver.py +79 -0
  205. claude_mpm/services/agents/deployment/async_agent_deployment.py +298 -234
  206. claude_mpm/services/agents/deployment/config/__init__.py +13 -0
  207. claude_mpm/services/agents/deployment/config/deployment_config.py +182 -0
  208. claude_mpm/services/agents/deployment/config/deployment_config_manager.py +200 -0
  209. claude_mpm/services/agents/deployment/deployment_config_loader.py +54 -0
  210. claude_mpm/services/agents/deployment/deployment_type_detector.py +124 -0
  211. claude_mpm/services/agents/deployment/facade/__init__.py +18 -0
  212. claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +159 -0
  213. claude_mpm/services/agents/deployment/facade/deployment_executor.py +73 -0
  214. claude_mpm/services/agents/deployment/facade/deployment_facade.py +270 -0
  215. claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +178 -0
  216. claude_mpm/services/agents/deployment/interface_adapter.py +227 -0
  217. claude_mpm/services/agents/deployment/lifecycle_health_checker.py +85 -0
  218. claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +100 -0
  219. claude_mpm/services/agents/deployment/pipeline/__init__.py +32 -0
  220. claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +158 -0
  221. claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +159 -0
  222. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +169 -0
  223. claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +19 -0
  224. claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +195 -0
  225. claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +119 -0
  226. claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +79 -0
  227. claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +90 -0
  228. claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +100 -0
  229. claude_mpm/services/agents/deployment/processors/__init__.py +15 -0
  230. claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +98 -0
  231. claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +235 -0
  232. claude_mpm/services/agents/deployment/processors/agent_processor.py +258 -0
  233. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +318 -0
  234. claude_mpm/services/agents/deployment/results/__init__.py +13 -0
  235. claude_mpm/services/agents/deployment/results/deployment_metrics.py +200 -0
  236. claude_mpm/services/agents/deployment/results/deployment_result_builder.py +249 -0
  237. claude_mpm/services/agents/deployment/strategies/__init__.py +25 -0
  238. claude_mpm/services/agents/deployment/strategies/base_strategy.py +119 -0
  239. claude_mpm/services/agents/deployment/strategies/project_strategy.py +150 -0
  240. claude_mpm/services/agents/deployment/strategies/strategy_selector.py +117 -0
  241. claude_mpm/services/agents/deployment/strategies/system_strategy.py +116 -0
  242. claude_mpm/services/agents/deployment/strategies/user_strategy.py +137 -0
  243. claude_mpm/services/agents/deployment/system_instructions_deployer.py +108 -0
  244. claude_mpm/services/agents/deployment/validation/__init__.py +19 -0
  245. claude_mpm/services/agents/deployment/validation/agent_validator.py +323 -0
  246. claude_mpm/services/agents/deployment/validation/deployment_validator.py +238 -0
  247. claude_mpm/services/agents/deployment/validation/template_validator.py +299 -0
  248. claude_mpm/services/agents/deployment/validation/validation_result.py +226 -0
  249. claude_mpm/services/agents/loading/__init__.py +2 -2
  250. claude_mpm/services/agents/loading/agent_profile_loader.py +259 -229
  251. claude_mpm/services/agents/loading/base_agent_manager.py +90 -81
  252. claude_mpm/services/agents/loading/framework_agent_loader.py +154 -129
  253. claude_mpm/services/agents/management/__init__.py +2 -2
  254. claude_mpm/services/agents/management/agent_capabilities_generator.py +72 -58
  255. claude_mpm/services/agents/management/agent_management_service.py +209 -156
  256. claude_mpm/services/agents/memory/__init__.py +9 -6
  257. claude_mpm/services/agents/memory/agent_memory_manager.py +218 -1152
  258. claude_mpm/services/agents/memory/agent_persistence_service.py +20 -16
  259. claude_mpm/services/agents/memory/analyzer.py +430 -0
  260. claude_mpm/services/agents/memory/content_manager.py +376 -0
  261. claude_mpm/services/agents/memory/template_generator.py +468 -0
  262. claude_mpm/services/agents/registry/__init__.py +7 -10
  263. claude_mpm/services/agents/registry/deployed_agent_discovery.py +122 -97
  264. claude_mpm/services/agents/registry/modification_tracker.py +351 -285
  265. claude_mpm/services/async_session_logger.py +187 -153
  266. claude_mpm/services/claude_session_logger.py +87 -72
  267. claude_mpm/services/command_handler_service.py +217 -0
  268. claude_mpm/services/communication/__init__.py +3 -2
  269. claude_mpm/services/core/__init__.py +50 -97
  270. claude_mpm/services/core/base.py +60 -53
  271. claude_mpm/services/core/interfaces/__init__.py +188 -0
  272. claude_mpm/services/core/interfaces/agent.py +351 -0
  273. claude_mpm/services/core/interfaces/communication.py +343 -0
  274. claude_mpm/services/core/interfaces/infrastructure.py +413 -0
  275. claude_mpm/services/core/interfaces/service.py +434 -0
  276. claude_mpm/services/core/interfaces.py +19 -944
  277. claude_mpm/services/event_aggregator.py +208 -170
  278. claude_mpm/services/exceptions.py +387 -308
  279. claude_mpm/services/framework_claude_md_generator/__init__.py +75 -79
  280. claude_mpm/services/framework_claude_md_generator/content_assembler.py +69 -60
  281. claude_mpm/services/framework_claude_md_generator/content_validator.py +65 -61
  282. claude_mpm/services/framework_claude_md_generator/deployment_manager.py +68 -49
  283. claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +34 -34
  284. claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +25 -22
  285. claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +10 -10
  286. claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +4 -3
  287. claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +4 -3
  288. claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +4 -3
  289. claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +6 -5
  290. claude_mpm/services/framework_claude_md_generator/section_generators/header.py +8 -7
  291. claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +4 -3
  292. claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +6 -5
  293. claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +9 -8
  294. claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +4 -3
  295. claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +5 -4
  296. claude_mpm/services/framework_claude_md_generator/section_manager.py +28 -27
  297. claude_mpm/services/framework_claude_md_generator/version_manager.py +30 -28
  298. claude_mpm/services/hook_service.py +106 -114
  299. claude_mpm/services/infrastructure/__init__.py +7 -5
  300. claude_mpm/services/infrastructure/context_preservation.py +233 -199
  301. claude_mpm/services/infrastructure/daemon_manager.py +279 -0
  302. claude_mpm/services/infrastructure/logging.py +83 -76
  303. claude_mpm/services/infrastructure/monitoring.py +547 -404
  304. claude_mpm/services/mcp_gateway/__init__.py +30 -13
  305. claude_mpm/services/mcp_gateway/config/__init__.py +2 -2
  306. claude_mpm/services/mcp_gateway/config/config_loader.py +61 -56
  307. claude_mpm/services/mcp_gateway/config/config_schema.py +50 -41
  308. claude_mpm/services/mcp_gateway/config/configuration.py +82 -75
  309. claude_mpm/services/mcp_gateway/core/__init__.py +13 -20
  310. claude_mpm/services/mcp_gateway/core/base.py +80 -67
  311. claude_mpm/services/mcp_gateway/core/exceptions.py +60 -46
  312. claude_mpm/services/mcp_gateway/core/interfaces.py +87 -84
  313. claude_mpm/services/mcp_gateway/main.py +287 -137
  314. claude_mpm/services/mcp_gateway/registry/__init__.py +1 -1
  315. claude_mpm/services/mcp_gateway/registry/service_registry.py +97 -94
  316. claude_mpm/services/mcp_gateway/registry/tool_registry.py +135 -126
  317. claude_mpm/services/mcp_gateway/server/__init__.py +2 -2
  318. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +105 -110
  319. claude_mpm/services/mcp_gateway/server/stdio_handler.py +105 -107
  320. claude_mpm/services/mcp_gateway/server/stdio_server.py +691 -0
  321. claude_mpm/services/mcp_gateway/tools/__init__.py +4 -2
  322. claude_mpm/services/mcp_gateway/tools/base_adapter.py +109 -119
  323. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +283 -215
  324. claude_mpm/services/mcp_gateway/tools/hello_world.py +122 -120
  325. claude_mpm/services/mcp_gateway/tools/ticket_tools.py +652 -0
  326. claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +606 -0
  327. claude_mpm/services/memory/__init__.py +2 -2
  328. claude_mpm/services/memory/builder.py +451 -362
  329. claude_mpm/services/memory/cache/__init__.py +2 -2
  330. claude_mpm/services/memory/cache/shared_prompt_cache.py +232 -194
  331. claude_mpm/services/memory/cache/simple_cache.py +107 -93
  332. claude_mpm/services/memory/indexed_memory.py +195 -193
  333. claude_mpm/services/memory/optimizer.py +267 -234
  334. claude_mpm/services/memory/router.py +571 -263
  335. claude_mpm/services/memory_hook_service.py +237 -0
  336. claude_mpm/services/port_manager.py +575 -0
  337. claude_mpm/services/project/__init__.py +3 -3
  338. claude_mpm/services/project/analyzer.py +451 -305
  339. claude_mpm/services/project/registry.py +262 -240
  340. claude_mpm/services/recovery_manager.py +287 -231
  341. claude_mpm/services/response_tracker.py +87 -67
  342. claude_mpm/services/runner_configuration_service.py +587 -0
  343. claude_mpm/services/session_management_service.py +304 -0
  344. claude_mpm/services/socketio/__init__.py +4 -4
  345. claude_mpm/services/socketio/client_proxy.py +174 -0
  346. claude_mpm/services/socketio/handlers/__init__.py +3 -3
  347. claude_mpm/services/socketio/handlers/base.py +44 -30
  348. claude_mpm/services/socketio/handlers/connection.py +166 -64
  349. claude_mpm/services/socketio/handlers/file.py +123 -108
  350. claude_mpm/services/socketio/handlers/git.py +607 -373
  351. claude_mpm/services/socketio/handlers/hook.py +185 -0
  352. claude_mpm/services/socketio/handlers/memory.py +4 -4
  353. claude_mpm/services/socketio/handlers/project.py +4 -4
  354. claude_mpm/services/socketio/handlers/registry.py +53 -38
  355. claude_mpm/services/socketio/server/__init__.py +18 -0
  356. claude_mpm/services/socketio/server/broadcaster.py +252 -0
  357. claude_mpm/services/socketio/server/core.py +399 -0
  358. claude_mpm/services/socketio/server/main.py +323 -0
  359. claude_mpm/services/socketio_client_manager.py +160 -133
  360. claude_mpm/services/socketio_server.py +36 -1885
  361. claude_mpm/services/subprocess_launcher_service.py +316 -0
  362. claude_mpm/services/system_instructions_service.py +258 -0
  363. claude_mpm/services/ticket_manager.py +19 -533
  364. claude_mpm/services/utility_service.py +285 -0
  365. claude_mpm/services/version_control/__init__.py +18 -21
  366. claude_mpm/services/version_control/branch_strategy.py +20 -10
  367. claude_mpm/services/version_control/conflict_resolution.py +37 -13
  368. claude_mpm/services/version_control/git_operations.py +52 -21
  369. claude_mpm/services/version_control/semantic_versioning.py +92 -53
  370. claude_mpm/services/version_control/version_parser.py +145 -125
  371. claude_mpm/services/version_service.py +270 -0
  372. claude_mpm/storage/__init__.py +2 -2
  373. claude_mpm/storage/state_storage.py +177 -181
  374. claude_mpm/ticket_wrapper.py +2 -2
  375. claude_mpm/utils/__init__.py +2 -2
  376. claude_mpm/utils/agent_dependency_loader.py +453 -243
  377. claude_mpm/utils/config_manager.py +157 -118
  378. claude_mpm/utils/console.py +1 -1
  379. claude_mpm/utils/dependency_cache.py +102 -107
  380. claude_mpm/utils/dependency_manager.py +52 -47
  381. claude_mpm/utils/dependency_strategies.py +131 -96
  382. claude_mpm/utils/environment_context.py +110 -102
  383. claude_mpm/utils/error_handler.py +75 -55
  384. claude_mpm/utils/file_utils.py +80 -67
  385. claude_mpm/utils/framework_detection.py +12 -11
  386. claude_mpm/utils/import_migration_example.py +12 -60
  387. claude_mpm/utils/imports.py +48 -45
  388. claude_mpm/utils/path_operations.py +100 -93
  389. claude_mpm/utils/robust_installer.py +172 -164
  390. claude_mpm/utils/session_logging.py +30 -23
  391. claude_mpm/utils/subprocess_utils.py +99 -61
  392. claude_mpm/validation/__init__.py +1 -1
  393. claude_mpm/validation/agent_validator.py +151 -111
  394. claude_mpm/validation/frontmatter_validator.py +92 -71
  395. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/METADATA +90 -22
  396. claude_mpm-4.0.4.dist-info/RECORD +417 -0
  397. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/entry_points.txt +1 -0
  398. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/licenses/LICENSE +1 -1
  399. claude_mpm/cli/commands/run_guarded.py +0 -511
  400. claude_mpm/config/memory_guardian_config.py +0 -325
  401. claude_mpm/config/memory_guardian_yaml.py +0 -335
  402. claude_mpm/core/config_paths.py +0 -150
  403. claude_mpm/core/memory_aware_runner.py +0 -353
  404. claude_mpm/dashboard/static/js/dashboard-original.js +0 -4134
  405. claude_mpm/deployment_paths.py +0 -261
  406. claude_mpm/hooks/claude_hooks/hook_handler_fixed.py +0 -454
  407. claude_mpm/models/state_models.py +0 -433
  408. claude_mpm/services/agent/__init__.py +0 -24
  409. claude_mpm/services/agent/deployment.py +0 -2548
  410. claude_mpm/services/agent/management.py +0 -598
  411. claude_mpm/services/agent/registry.py +0 -813
  412. claude_mpm/services/agents/registry/agent_registry.py +0 -813
  413. claude_mpm/services/communication/socketio.py +0 -1935
  414. claude_mpm/services/communication/websocket.py +0 -479
  415. claude_mpm/services/framework_claude_md_generator.py +0 -624
  416. claude_mpm/services/health_monitor.py +0 -893
  417. claude_mpm/services/infrastructure/graceful_degradation.py +0 -616
  418. claude_mpm/services/infrastructure/health_monitor.py +0 -775
  419. claude_mpm/services/infrastructure/memory_dashboard.py +0 -479
  420. claude_mpm/services/infrastructure/memory_guardian.py +0 -944
  421. claude_mpm/services/infrastructure/restart_protection.py +0 -642
  422. claude_mpm/services/infrastructure/state_manager.py +0 -774
  423. claude_mpm/services/mcp_gateway/manager.py +0 -334
  424. claude_mpm/services/optimized_hook_service.py +0 -542
  425. claude_mpm/services/project_analyzer.py +0 -864
  426. claude_mpm/services/project_registry.py +0 -608
  427. claude_mpm/services/standalone_socketio_server.py +0 -1300
  428. claude_mpm/services/ticket_manager_di.py +0 -318
  429. claude_mpm/services/ticketing_service_original.py +0 -510
  430. claude_mpm/utils/paths.py +0 -395
  431. claude_mpm/utils/platform_memory.py +0 -524
  432. claude_mpm-3.9.11.dist-info/RECORD +0 -306
  433. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/WHEEL +0 -0
  434. {claude_mpm-3.9.11.dist-info → claude_mpm-4.0.4.dist-info}/top_level.txt +0 -0
@@ -8,33 +8,32 @@ Provides service discovery, registration, and dependency resolution.
8
8
  Part of ISS-0035: MCP Server Implementation - Core Server and Tool Registry
9
9
  """
10
10
 
11
- from typing import Dict, Any, Optional, Type, TypeVar, List
12
- from threading import RLock
13
11
  import logging
12
+ from threading import RLock
13
+ from typing import Any, Dict, List, Optional, Type, TypeVar
14
14
 
15
+ from claude_mpm.core.logger import get_logger
16
+ from claude_mpm.services.mcp_gateway.core.base import BaseMCPService
15
17
  from claude_mpm.services.mcp_gateway.core.interfaces import (
16
- IMCPGateway,
17
- IMCPToolRegistry,
18
18
  IMCPCommunication,
19
19
  IMCPConfiguration,
20
+ IMCPGateway,
21
+ IMCPLifecycle,
20
22
  IMCPToolAdapter,
21
- IMCPLifecycle
23
+ IMCPToolRegistry,
22
24
  )
23
- from claude_mpm.services.mcp_gateway.core.base import BaseMCPService
24
- from claude_mpm.core.logger import get_logger
25
-
26
25
 
27
- T = TypeVar('T')
26
+ T = TypeVar("T")
28
27
 
29
28
 
30
29
  class MCPServiceRegistry:
31
30
  """
32
31
  Service registry for MCP Gateway components.
33
-
32
+
34
33
  WHY: We need a centralized registry for managing MCP services,
35
34
  enabling dependency injection and service discovery patterns.
36
35
  This aligns with the claude-mpm service-oriented architecture.
37
-
36
+
38
37
  DESIGN DECISIONS:
39
38
  - Use interface-based registration for loose coupling
40
39
  - Support singleton and transient service lifetimes
@@ -42,43 +41,43 @@ class MCPServiceRegistry:
42
41
  - Enable service health monitoring
43
42
  - Support service dependency chains
44
43
  """
45
-
44
+
46
45
  def __init__(self):
47
46
  """Initialize the service registry."""
48
47
  self.logger = get_logger(self.__class__.__name__)
49
-
48
+
50
49
  # Thread safety
51
50
  self._lock = RLock()
52
-
51
+
53
52
  # Service storage
54
53
  self._services: Dict[Type, Any] = {}
55
54
  self._singletons: Dict[Type, Any] = {}
56
55
  self._factories: Dict[Type, callable] = {}
57
-
56
+
58
57
  # Service metadata
59
58
  self._metadata: Dict[Type, Dict[str, Any]] = {}
60
-
59
+
61
60
  # Service health tracking
62
61
  self._health_checks: Dict[Type, callable] = {}
63
-
62
+
64
63
  def register(
65
64
  self,
66
65
  interface: Type[T],
67
66
  implementation: Optional[Type[T]] = None,
68
67
  factory: Optional[callable] = None,
69
68
  singleton: bool = True,
70
- metadata: Optional[Dict[str, Any]] = None
69
+ metadata: Optional[Dict[str, Any]] = None,
71
70
  ) -> None:
72
71
  """
73
72
  Register a service in the registry.
74
-
73
+
75
74
  Args:
76
75
  interface: Service interface type
77
76
  implementation: Service implementation class
78
77
  factory: Factory function to create service instances
79
78
  singleton: Whether to create a single instance
80
79
  metadata: Additional service metadata
81
-
80
+
82
81
  WHY: We support both direct implementation and factory patterns
83
82
  to provide flexibility in service instantiation. Singleton support
84
83
  enables efficient resource management.
@@ -86,34 +85,34 @@ class MCPServiceRegistry:
86
85
  with self._lock:
87
86
  if implementation is None and factory is None:
88
87
  raise ValueError("Either implementation or factory must be provided")
89
-
88
+
90
89
  if implementation and factory:
91
90
  raise ValueError("Cannot provide both implementation and factory")
92
-
91
+
93
92
  self.logger.info(f"Registering service: {interface.__name__}")
94
-
93
+
95
94
  # Store service registration
96
95
  if implementation:
97
96
  self._services[interface] = implementation
98
97
  elif factory:
99
98
  self._factories[interface] = factory
100
-
99
+
101
100
  # Store metadata
102
101
  if metadata:
103
102
  self._metadata[interface] = metadata
104
103
  else:
105
104
  self._metadata[interface] = {"singleton": singleton}
106
-
105
+
107
106
  self._metadata[interface]["singleton"] = singleton
108
-
107
+
109
108
  def register_instance(self, interface: Type[T], instance: T) -> None:
110
109
  """
111
110
  Register a pre-created service instance.
112
-
111
+
113
112
  Args:
114
113
  interface: Service interface type
115
114
  instance: Service instance
116
-
115
+
117
116
  WHY: Sometimes we need to register pre-configured instances,
118
117
  especially for services with complex initialization.
119
118
  """
@@ -121,17 +120,17 @@ class MCPServiceRegistry:
121
120
  self.logger.info(f"Registering instance: {interface.__name__}")
122
121
  self._singletons[interface] = instance
123
122
  self._metadata[interface] = {"singleton": True, "instance": True}
124
-
123
+
125
124
  def resolve(self, interface: Type[T]) -> Optional[T]:
126
125
  """
127
126
  Resolve a service from the registry.
128
-
127
+
129
128
  Args:
130
129
  interface: Service interface type
131
-
130
+
132
131
  Returns:
133
132
  Service instance or None if not found
134
-
133
+
135
134
  WHY: We use lazy instantiation for non-singleton services
136
135
  and cache singletons for performance.
137
136
  """
@@ -139,134 +138,139 @@ class MCPServiceRegistry:
139
138
  # Check for existing singleton
140
139
  if interface in self._singletons:
141
140
  return self._singletons[interface]
142
-
141
+
143
142
  # Check for factory
144
143
  if interface in self._factories:
145
144
  factory = self._factories[interface]
146
145
  instance = factory()
147
-
146
+
148
147
  # Cache if singleton
149
148
  if self._metadata.get(interface, {}).get("singleton", False):
150
149
  self._singletons[interface] = instance
151
-
150
+
152
151
  return instance
153
-
152
+
154
153
  # Check for implementation class
155
154
  if interface in self._services:
156
155
  implementation = self._services[interface]
157
-
156
+
158
157
  # Create instance
159
158
  try:
160
159
  instance = implementation()
161
-
160
+
162
161
  # Cache if singleton
163
162
  if self._metadata.get(interface, {}).get("singleton", True):
164
163
  self._singletons[interface] = instance
165
-
164
+
166
165
  return instance
167
-
166
+
168
167
  except Exception as e:
169
- self.logger.error(f"Failed to create service {interface.__name__}: {e}")
168
+ self.logger.error(
169
+ f"Failed to create service {interface.__name__}: {e}"
170
+ )
170
171
  return None
171
-
172
+
172
173
  self.logger.warning(f"Service not found: {interface.__name__}")
173
174
  return None
174
-
175
+
175
176
  def resolve_all(self, interface: Type[T]) -> List[T]:
176
177
  """
177
178
  Resolve all services implementing an interface.
178
-
179
+
179
180
  Args:
180
181
  interface: Service interface type
181
-
182
+
182
183
  Returns:
183
184
  List of service instances
184
-
185
+
185
186
  WHY: Some scenarios require multiple implementations of
186
187
  the same interface (e.g., multiple tool adapters).
187
188
  """
188
189
  with self._lock:
189
190
  instances = []
190
-
191
+
191
192
  # Add singleton if exists
192
193
  if interface in self._singletons:
193
194
  instances.append(self._singletons[interface])
194
-
195
+
195
196
  # Note: In a full implementation, we'd track multiple
196
197
  # registrations per interface
197
-
198
+
198
199
  return instances
199
-
200
+
200
201
  def unregister(self, interface: Type) -> bool:
201
202
  """
202
203
  Unregister a service from the registry.
203
-
204
+
204
205
  Args:
205
206
  interface: Service interface type
206
-
207
+
207
208
  Returns:
208
209
  True if unregistration successful
209
210
  """
210
211
  with self._lock:
211
212
  found = False
212
-
213
+
213
214
  if interface in self._services:
214
215
  del self._services[interface]
215
216
  found = True
216
-
217
+
217
218
  if interface in self._factories:
218
219
  del self._factories[interface]
219
220
  found = True
220
-
221
+
221
222
  if interface in self._singletons:
222
223
  # Shutdown if it's a lifecycle service
223
224
  instance = self._singletons[interface]
224
225
  if isinstance(instance, IMCPLifecycle):
225
226
  try:
226
227
  import asyncio
228
+
227
229
  asyncio.create_task(instance.stop())
228
230
  except Exception as e:
229
- self.logger.warning(f"Error stopping service {interface.__name__}: {e}")
230
-
231
+ self.logger.warning(
232
+ f"Error stopping service {interface.__name__}: {e}"
233
+ )
234
+
231
235
  del self._singletons[interface]
232
236
  found = True
233
-
237
+
234
238
  if interface in self._metadata:
235
239
  del self._metadata[interface]
236
-
240
+
237
241
  if interface in self._health_checks:
238
242
  del self._health_checks[interface]
239
-
243
+
240
244
  if found:
241
245
  self.logger.info(f"Unregistered service: {interface.__name__}")
242
-
246
+
243
247
  return found
244
-
248
+
245
249
  def register_health_check(self, interface: Type, health_check: callable) -> None:
246
250
  """
247
251
  Register a health check for a service.
248
-
252
+
249
253
  Args:
250
254
  interface: Service interface type
251
255
  health_check: Health check function
252
256
  """
253
257
  with self._lock:
254
258
  self._health_checks[interface] = health_check
255
-
259
+
256
260
  async def check_health(self) -> Dict[str, Any]:
257
261
  """
258
262
  Check health of all registered services.
259
-
263
+
260
264
  Returns:
261
265
  Dictionary of service health statuses
262
266
  """
263
267
  health_status = {}
264
-
268
+
265
269
  with self._lock:
266
270
  # Check singleton services
267
271
  for interface, instance in self._singletons.items():
268
272
  service_name = interface.__name__
269
-
273
+
270
274
  try:
271
275
  # Use custom health check if available
272
276
  if interface in self._health_checks:
@@ -276,47 +280,44 @@ class MCPServiceRegistry:
276
280
  else:
277
281
  health = health_check(instance)
278
282
  health_status[service_name] = health
279
-
283
+
280
284
  # Use built-in health check for lifecycle services
281
285
  elif isinstance(instance, IMCPLifecycle):
282
286
  health_status[service_name] = {
283
287
  "healthy": instance.is_healthy(),
284
288
  "state": instance.get_state(),
285
- "details": instance.get_health_status()
289
+ "details": instance.get_health_status(),
286
290
  }
287
-
291
+
288
292
  # Basic health check
289
293
  else:
290
294
  health_status[service_name] = {
291
295
  "healthy": True,
292
- "state": "unknown"
296
+ "state": "unknown",
293
297
  }
294
-
298
+
295
299
  except Exception as e:
296
- health_status[service_name] = {
297
- "healthy": False,
298
- "error": str(e)
299
- }
300
-
300
+ health_status[service_name] = {"healthy": False, "error": str(e)}
301
+
301
302
  return health_status
302
-
303
+
303
304
  def get_metadata(self, interface: Type) -> Optional[Dict[str, Any]]:
304
305
  """
305
306
  Get metadata for a service.
306
-
307
+
307
308
  Args:
308
309
  interface: Service interface type
309
-
310
+
310
311
  Returns:
311
312
  Service metadata or None
312
313
  """
313
314
  with self._lock:
314
315
  return self._metadata.get(interface)
315
-
316
+
316
317
  def list_services(self) -> List[str]:
317
318
  """
318
319
  List all registered services.
319
-
320
+
320
321
  Returns:
321
322
  List of service interface names
322
323
  """
@@ -326,7 +327,7 @@ class MCPServiceRegistry:
326
327
  services.update(interface.__name__ for interface in self._factories.keys())
327
328
  services.update(interface.__name__ for interface in self._singletons.keys())
328
329
  return sorted(list(services))
329
-
330
+
330
331
  def clear(self) -> None:
331
332
  """Clear all service registrations."""
332
333
  with self._lock:
@@ -335,17 +336,18 @@ class MCPServiceRegistry:
335
336
  if isinstance(instance, IMCPLifecycle):
336
337
  try:
337
338
  import asyncio
339
+
338
340
  asyncio.create_task(instance.stop())
339
341
  except Exception as e:
340
342
  self.logger.warning(f"Error stopping service: {e}")
341
-
343
+
342
344
  # Clear all registrations
343
345
  self._services.clear()
344
346
  self._factories.clear()
345
347
  self._singletons.clear()
346
348
  self._metadata.clear()
347
349
  self._health_checks.clear()
348
-
350
+
349
351
  self.logger.info("Service registry cleared")
350
352
 
351
353
 
@@ -356,7 +358,7 @@ _service_registry: Optional[MCPServiceRegistry] = None
356
358
  def get_service_registry() -> MCPServiceRegistry:
357
359
  """
358
360
  Get the global MCP service registry instance.
359
-
361
+
360
362
  Returns:
361
363
  Service registry instance
362
364
  """
@@ -369,25 +371,26 @@ def get_service_registry() -> MCPServiceRegistry:
369
371
  def register_mcp_services() -> None:
370
372
  """
371
373
  Register all default MCP services.
372
-
374
+
373
375
  This function sets up the standard MCP service configuration.
374
376
  """
375
377
  registry = get_service_registry()
376
-
378
+
377
379
  # Register core services
378
380
  # Use the official MCP gateway implementation
379
381
  from claude_mpm.services.mcp_gateway.server.mcp_gateway import MCPGateway
382
+
380
383
  registry.register(IMCPGateway, MCPGateway, singleton=True)
381
-
382
- from claude_mpm.services.mcp_gateway.server.stdio_handler import StdioHandler
383
- from claude_mpm.services.mcp_gateway.registry.tool_registry import ToolRegistry
384
+
384
385
  from claude_mpm.services.mcp_gateway.config.configuration import MCPConfiguration
385
-
386
+ from claude_mpm.services.mcp_gateway.registry.tool_registry import ToolRegistry
387
+ from claude_mpm.services.mcp_gateway.server.stdio_handler import StdioHandler
388
+
386
389
  registry.register(IMCPCommunication, StdioHandler, singleton=True)
387
390
  registry.register(IMCPToolRegistry, ToolRegistry, singleton=True)
388
391
  registry.register(IMCPConfiguration, MCPConfiguration, singleton=True)
389
-
392
+
390
393
  logging.info("MCP services registered")
391
394
 
392
395
 
393
- import asyncio
396
+ import asyncio